<?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-13" 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>all1-data-no: the last fragment contains no data, just the RCS</t>
  <t>all1-data-yes: the last fragment includes a single tile and the RCS</t>
  <t>all1-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 “all1-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-parameters" title="Fragmentation Parameters">

<t><list style="symbols">
  <t>max-ack-requests expresses the number of attempts before aborting (cf. section 8.2.2.4. of <xref target="RFC8724"/>).</t>
  <t>maximum-packet-size rexpresses, in bytes, the larger packet size that can be reassembled.</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-02-15.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-02-15 {
    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
      "All1 contains no tiles.";
  }

  identity all-1-data-yes {
    base all-1-data-base-type;
    description
      "All1 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:
H4sIALPsy2IAA+19a3fbyLHgd/yKvvI5a9FDUCIlSzJnxgmtx4w21uNKcnxz
Njc5IAlSuAYBBgAlM5byW/a37C/bevQTACnqcSfO2VUeJkF0d3V1VXVVdXWV
7/teXgTJ8K9BnCZhVxTZLPSiaUaf8qKzuflus+MN00ESTODnYRaMCj8Ki5Ef
T2+DxM8H1wN/HiRjfxgUgT9Jh2Hst7e8QVB0RV4MvWnU9YTI55MsHOVd8Xoe
5q/xQZoVpSdFFg0K832QTqaB/aBIB+qLV0RFDOAcwJjiBMcUozQTl0VQRAOx
nyZF+LUQv4bBMMzg62SahXkepYlYv9z/db/hBf1+Ft50xcfzz71Tgc/En3qn
vwgAfxaH3u24K2h64nOafYmSsfglS2dTL5gV12nW9XwRJQB5ryVOoiToz7IU
wGME9ZLAfphm0FVv8CWOUp5iGMKM2u2t3Z4IbsJkFophmIv962AyzcWHOEgG
Oc49KuZdsfX2bXtT7APoaeJfhjfROAnh6zD8SuiZJUUGbx1l0CiEJ+EkiOKu
CJLg9wGM2IIhJaAfW+IqnRVBlGg4PwazLEwK6zmBepzkgNpZIU6OTw8vxdXh
x8P9s5MfxfHJlegVAF4R/W0WmqnAJ190REbzEHGAM4H+ANAsiEL6df9StHd3
Nnftae3uPHpaEuCWBPj30aTwAw1Ra5R5SZpNYP1vQoRKiIuj/c3dnT39pdNu
v9Nftnb2zC87m51N/WW387Zjvrzb2dVf9tq72+YLcIb5stPeMl92O9Zre/gl
SkYV2HbfbdvjvDW9vdtst/nLsX/QsngtyAbXUREOCsAEv+D5vi+CPiwGcIrn
XV1HuQBenU1waYGwBlnUB/IKmLqRQ8VEc0txHTLprz/INw3hDSwuAnkhRlkw
xmGgJTzJgG3ylucRQJNoOAQu8rxXQE9FBjw1oJe+vbK/3nsejR4hfMt7n4SD
6yCJ8gnBPUgTnHCUhEORhMUtsCjMOhzRgwiG+SZX4f6+5R0XOEA/yOE37BsI
l+Y6kHPNr4MMfurPBXQkYMSoiBBjBaGnD9Q4DLK5SEf0vWbolmeNJ6ZZehMN
CeUJDEfLHossxMnp6cjOCGdihpCFETzI5Ow0JjaGoY2Xdfh1f+Og4cG/Dn42
sjDI83DSj+f00tHGRQM4HoYYpzA6DWcTBnwuUglb9PeQgGFimVbhgzfT0SgE
qee9occ5yA9Gd8RvJ4Cm4hpwN8ybIgShJiLuIAIUZ0l1/ghLhH0iPwvoFgTt
bArUGaqhU0IH9IjD52EBP8OOAePm03AQjWD9boJ4BtCth61xSxyf3+wA6gGm
r02cSQECmEYKhkPEXrPVajVgHPjHg+VawlawhFEcz3CRC5w8wBJ+ReIbE2xq
yXBLwN9KbNWqsiBSpWZA3l6YQJHlYTSYn8YO43EFRmuK2+tocC1iYFRaIWgz
wR9dPCM5STzhxyCOrXUN4xB7zWEBgE8vwr/NooyfgKhNxrNgHOJsQvElnAsg
dBho7eTT5dVak/8Vp2f0+eLw3z8dXxwe4OfLX3sfP+oP6o3LX88+fTwwn0xL
2FpODk8PuDE8Fc4jb+2k9yf4BZGwdnZ+dXx22vu4hhzukjMwMOKgLwkOUFAA
SwW5FoAkFT7sn4v2NuMetwLAPTMuSHX4fHsdJjxUmgAb8VfA1twLptMwyLAL
ROAgmEZFEMMSwAD5dXqbCCDVsIVIJHFG2F2NDr6LtSeg7XEB7nEI+3c0IAQI
2H5tCTxMoYMkLWBA4GAPAAgMV4L4Ay0tjVugB80BMbSPjKIwHpKYlxsVLEhx
DQrV+Bo5//gAcCmmaU7iBD8PgRIH8gsgIeCJQBuQygNoASsN4hUwCzAGsce/
4iRJh0xAINgiGbvg73v0nYGdM1iMHZIf/A5s6/f3TfHp4Jy+owaB3/fT3rnk
W9APUEokg3g2RDmQktCUO1AEc8MeExRb2U04ywBP+RR+D4Xi+51dCdXZ5f7Z
xaEcGFQI2K/EkdyY46AAWi4BHkdFzsQvcZqgeJz1fZ5LS65miWqYtZH4UJKC
FJMUMw0yEOUwSs6oRT7iaTHHBEQttJEA9Nbb+OKi/ZZERlnbAOpLb3OW5TEs
rdxLDc3JSbuAGzE7CgMUzgQ4IA71jFevHL3+guj62yvs9K/FfBrm9155YwYS
W21jtiEjFHg955nSHYixABM30SBE+sZ3UlI0RgbZrBmJwwB4Fj9Ta2CpXGit
ELosUk9JK5uf1DITWJKdWNQpeMIhMvE/6M8DnfAH/7l/P0Avd6L2D7EsTut/
K/3deS8BCvRSCwoBEq0ECIBy570EKHcegLJ+dHzQqEDSXhESAAV6UcD8YP3X
Gqg6dBUU6OXuiGijfXf08e7o/O7g+O4qyMZAc39EcXh3EhSg1QD/nE3BFCvS
7A7ZZeOANEqwSIu7l4el813AAkoeobrVkv+FL/IZErb+KOqfvBgsGxovp8/A
y0uAsuEt4OdH/OkevD9XRnzs34YwIutbV7w6isb+oACBSl6dn1/bgv3AMYGk
hfr6HjeA4yGaayAiM1ZYSJJ6nvWYbCspPY2Tx96YMtx00gmbK9SwmINiQ1Yi
6UgobsMkn2kdcxynfdjP5mKWoOOBNnJ4DBZYBA+DGW1gOOwILMRwiPKZTLEp
aCaDaMpqH++euBeFtwK3K9tCHaOvCbcOG6CIjZFRilsp0AyZY7ob0tHU62g3
IVXdglFJjUCDRwWexvBxtBY3zqKbUGuGsnWkTFKJNtvDxoiS5rTQHQ3A/CwQ
CnwCIC148YpsqWCCKFj/9g0X3Zrg/X2D1OlcwP+hWliaPA/CytXF/qVYvzA2
7/51OPgiLkHPCZNB2IApjdMMJj+RUxnOUCsUVd0It04mRE9sbAjfp651c4I8
x11VozYb5L7+3dcIFd/IHWMZ0R5zy5qkxrnU2k3fkQSONfjpDDAIg7dkOyIZ
8zIYHKk2IsgIR7tdqisIMykKrbUfofl9BWCpBUkgaU0WzOPHRdPYv9gXWx2t
9ZFxNQpmcUGjA63IMVr8PRfboj8vQj9Ok7GBShGIO7qFQPpor/w3CcDDQN8v
Ap36VCTN2piEyJVA9rBSEJ3X8qzLr1azFsol1kyTG3wq7TDeBYxcAhnFzAVK
6QAkm9TJlZRrWtperj0iWTSO0JcyDQZfQlbWR1GWF6iYKzpSjBhHOeme0iwQ
ZIy6D3GNJrj/4GqOUR8tXKcPTHZIT8D+Bd05i7BrUmDJJptOgfEsoFvCMbqM
mUiSlJia5Bej4kCadKQ0o0tthlYhsCMgRsoIMHQjibGBcRulSWhsR2nuwboO
w6/SicdYJSOUPN2Wh6h1A/gk/KI1p7+hb0iKp8EsI6d4eZuQVlGucGe8X2g/
zpKyGdS07Tbo+9Mih1ET9g2QCowV8qr0Qz1t20yW2w63t0kOttIeP9WoVb5d
jQc0vePbYJ5LmT80e94oGhpGIlMvsYWv8LAzgtHuTdon0JGx0QDZ+HFgkT70
/eef/vyTsx7v39vjeT3YfcBmyqN+HNoWOe0euiFhRu5XGnQDkASWXZ4SDs8C
BLpaA2DW5O65iFICSfCMSHwEdIOWHD+4BqHnsQ4wjNDJW7G/m1ZzjUFyA+Qo
MQMSGrjnIJyjGUyd3gXJY/tTI4emgiQJv/bQM9CT0tH4urXrQs2D/SW0XJ72
uhhJVbTEaVpIRwpt7tFodAnwiT46FhjBucHwVRaM0Ardj2GrNWheIuPiMBmD
0uF5zlcAQjq4kbRAOxqjygY4lKSjNrPA2LsEELt0tC08Swa8aduCxtoUvbWb
IFvT7+kdl3wP8FMUIJFJmCStrd9eg8VuA/pVmtUEBWxheaPiQbI34rXiS2yN
iaiYBEkwVnNDUeNdpV+Ar+yRpcCpMg3RalwlVT0C0aUkIRvJ+gXpIbO26pI2
VfaM2kR2hc5MmETItEwUh3MaldYzQPUXPf9hcRtKmeEurFrEsrYi+1DMZsuy
JYSl3IOKstR3hoW/3YQaBl76MZEzMbp63VBZUx57sBajt6M28xBIfPaGIwYL
ZqksnIZFJPVGbrCJew/uT2FuuMqGDXfAaDJNsyJAT3UyVA9x24O5Z0Y9Vbuv
9JFhB1I/aInVps0CUEkJPFSBH/ZadVg9UC5WccwTSDOmqZofxPowatj6ahGC
6IoMv7KHPKclRy+29t+K9Q/QEnogn/psGkfJF7H+aUrPDtLbhB8c3DYc2V1i
h2FUZYc6MC3OUDiAtrTTrNUiwTbGxbdXBX39K63sPffjvEE4V1pUH5SxDKU7
Gx2kpwXJXJI3EFGMx9qMLqL6EUhfqfbhKjP5seaDxuVtBDjtS0U1UCM12Ygj
BYefgi3HuLqOxtchwMK/afot2xRl9uPX6cQB1eEQiHAWapWBNEJ/AguK67B/
0BPri43xHi2AXDoJonH0Si97HoKeBYoLn0WQ1You7sO/zeAh8sPHyw9NF8/a
QQrCH8AAjpDnFRXxxIOiQhKSob7ZUv07Eyn3HyRqDA2eORE5NvjMWfEADTYr
eFfcJJCVooadRONZOiMOPR7ZXlrmDGsq6LdgqEukg0uWm5NVeJSS/V5LshWX
kedVHon1k7MGU6veFFBfR31Ny2sJINONPLU2ehGbFHIqSlQzf3CT+k14W5yc
Ld3ZJmmVlU/Oajl3kjLnCtoVXlVnDibQmE7X6LQtnJNJdBOFty4D9WcRyHdi
I1iEG59ZTqznISzgdTDlUxaH9+8btbh/iBMAjodeAXY66DWMhp+7ezuQMBBD
OQwAhaUTCQDUVof9HWRYpV7W438wDKoLgGwuV+BV6Vildg4W3vfZYALhnqTU
jzlsUi/hChTKmzSakbCjo3x8fRLMVROBph3MVHGk7qC1bHVRqtHS+fKMkH1N
MI2jytEpiHj0/ujjIfcNQA+f5AWxgtZ2FCaoo08xxgFVaTYe8ORooCXrmuNa
WlOHVmiheScp7xrVQ67SsRrOirWyHupk4gBb2QdseGIb4ag1R8N4TP9Fnkpp
tdk6TMXjbBZeSvyh5zAZIjfNrV07Ultqy2FJLaIC/owLpvwqNpkAUFkUyoXv
R7rfQBpyeNAvdzpJcu5KIMa9WgrfKscFwZu8p5ymGGXXZbsRH9NemJjBYfQm
Emkw+JKkt3E4HKtQGD59h+eI2zfYjeiRtdyVxrkz5C0gJ70VkxksKLp9v4Jc
HUTIAaZnkrO4S4lxSpod6wCwnkVLDQFdHWZZmnUFGHayUxTZdic6EoG1hnAQ
grKHsgCDVXLmokmUkwmuoMzLctQBn+IzpUYkllkglUY1FkllKZQUqVlTDimD
n3rMVaqx3GOavMk6Xmti2eMDZc/QMknWc4fWa1ySizWqObmA5baGskcepKpD
2/XBCDc29AbiED6/6XN/DSK0gDziY2BaUCrGoLvCFy3Q50qPH6p3+qG9OHws
UJ0B787kCxtoiZoa7UR1p1x52kzWEossC6AJY6Ep+0+uFp9j0wQ+M7Wtf25o
9gWK9JnoqSf8CutOBMpMRrqreatJg5FeiTaT/lU1wt/L8lIFExj42RLiUxKE
4jT1kTVwQObFQFOR3pXgzdPZpA/rt360f9pQi6wjBeT7G0UUW5YYEpUU6sxr
ZUCMGEw5zodmvSDKwZ19PaLlgfyd7zPR6YnI4Eo8B7tTzn4h8L0reHjnn/j4
+RQ/47E1nU76P+h/fecz/cE3ddT3j5o/744OqYGT7sQB0iz8+xnP8wB/+FlD
dh7M4zQYwqNpMKQTpHWQ9Lw8jReCpeRzL3OZcrwf1MgI1sDlIvAJ4CvxMcgL
8yLHU7AAjJ1fyO7XXKmkPmuFyYMHSkwmdAaAoleaTcB2XpEFSU4yGDc+4hdk
IO3SjOFDmCuFgmBSBFi3wWmLxxz9aPfdIXrQElDAPTyMYftOn2ItFuXZIK/K
btO9FNloM1W4ns2VXhz7bYNJFJv/hbuf0iHUERQqreQGIl85KtuRjB6ylRzb
d+b1w+vgJko5thS4rs2XCJK0a9ClB9a2FOzi+FqTwZDDuz3MQS2o6UL78TWe
SUwoA6fSDRAJUubgOo0GYV2HiIyUtxLp1JFqldU9o0Dv3ogjSUbkQiEIyNlN
gUhLzScNWXVFFSqNbZGpnbjnqjzqTR6opA+VeW6cGupNpyRPQ0tTBLZCcBa6
ZPX27uyyaHpZuyyAYO2uBe6qgBmJDzDF3jhqqtSVgtzR0hXcHE4s9tH36LiY
gVVm5KRBUgVbIRpK3sGta4Cni3g0FkTxDJ0LAbafBFOJZtzv3H1GLudQrrCn
4xlAeEuJ39v/wyrCXrTFQkFfK0Vtec4CneT5/s9tI7i13C6HcaznswG6FBfK
8/ohl7zN0p4f1gr+hfBu3lmb+gfCN82gZYG/LpdkGbwPQ1AONlFkp7ab3nIm
oJgDs++UZWWT11uR/a08QytxlqXGSuVDhbIW5DgsoklY1iXiYA7Dd5rqOgIG
xNNOJpkAVSAUV/5mQ+CtADKMdbwphRcjmSqidWWXbtxe6n2FafhKZKywkaDA
uYKp6OhjFjN8CjwJ0IUTGi8BmTAyHFW+D1BfA7NToGSGcgb240rQxhvowt56
/YKGNA7/4YzDgZQhlsuYGF4XAgCdp6Tw51KY7bU68J/tVsnkbtApoD7ybEqf
mbIA+doaAKm88SSCoiSATm+iYu6AVgtb0E/Z9AlKZkGuLn6sBiXiWR1LWHZp
xQxCU55gonsYOZ6KDVslgzvls3t9zosUmtEtCOkqRvrCTnIp+/HSEjTM0GE0
IbU/MBMFUNsdcZ3OMjYkRoAcVi4YXu45T2cxxVIpJ+UkiuMI5p0m8lQ4C0Hn
IkbJ53kRTmRIsTKS5mgfpeyERg8ROoZk38g1aGRxKAGe1N6mtlqiV1PNuIvx
Km/c9Up5v0ZPAV8rkk52yQ10cJtNZnEgOn/B13zVcqO9+ZedlvhMprz9g+27
ZoTMkqhQzpZJNMhSnj+vrntaBeB0Ns09gIDbIq5bm9t7b3ffCtW2Z1psdewW
CIw7v346K2BLwrUS7TaAkMAE85ZGRsLGF/qyoK3ehEGMK9mFUMBclRmvYHbn
bc1AnjQSMUnfPOpJgVw5RQwwKZwPKWvtd0xM/CqyTpUGSWFAcVHnjjg3K4/C
ZBJ8xe3Al2LBnALnpTljUP5kCi+UWXc1FuWhosls4nMYj09GZKaHa+pT56aU
2BkeZ8qYn5wva5lbEPreF0eBS4uI9gyLuFkC14WzlJhA7rmj8v0yUs3ijo9B
hARx19H3KDbLadBUp79NwSGNciOje0TycFZOwTk2q6Ny4IU9WnTaDnBrG1IY
RvX0FuFG3OmzNzmqQ/9tPmlTQlG7hrKQ/RHcmO8VwUjwALFCfUvliuR7zTJ2
HcVXvmDFNswSE7OvTdGW+DBX07AlopEL7c7eJpNEyzrnsE73Z0nO05WnwE3B
+rU+1Kf7XehMM0Em6Icj/1rEcR0k40GIBSqqlX80kbTr0hvXYE9vRD5HOuwN
uG8d0sU3dtQzta7mWghFt2Jr7NGPhhz+58Q26kNRdZhpbkkFyi2IiyqdXYDd
TY5xYtXEbZDg+TvthdIDhVjMQvaQ5uZS3+JLLUT+1qlIt3RfVSESeDEdRBSl
WnZitthFPbA7oQ2jdBKkCJqaqdmj7oKn/SwEIoyQK8IkT1nTTNIqMLeBiiGS
tpZhViWjdhpEx45Y7C4/m1g2v5J8tQ9T6B6bvMBTPiPJr9WeD9ROIgz3b7JQ
7DMMc2CeOXRFfUuyy+yzc31KrtaG44+8oHyuVla5mERE5X4RPvdK14BU37Zt
K88+VIANBcIUuQrkIOnR4xOSubBOh1UMtnUjyKFFFSGPFxUV6pl+tSDopzc6
tqwCpYn3cfpyvZdWK5+uOKGlcmxfXpTBD/ZdcJ/YmCbULAViRvrqHyjN2hVL
J2nGY18C1+pOePJQ3mH/GO0HeZJWUECXPSPqD8YlmZKFo5gOSkycEckyF3FR
ApqvdW0Mr6WTVYI+QCb8aZjhurAbTstoPniyD8W1FqnApRP7M3PZmV2YIK1T
vDH6hhn45PIDvmSHVaqLl3zi7afyxNuvHcVbcNyJ5FpzCPowwbI+JyMjlenX
EoQVRsCE0KJvYOoTP4/ubTPSDMJLbnTrDJaOMxl+2huuQC4rV4rw+JZsV9BV
bcwzglfKslvBHwV/wTm9Ef9LbSbSnpDfWEr8p/S86PfNi9U/DJna6tS1kCKn
tsWe3WA9IWHX+J32+Pzgd9cdOdMQ35zv9+bdO+6kegKnXsDpdxec6pV7sZW2
3y2EWr9uHHvlPxpUBlNVWoEqUzPCokFu699d9PpokLCWvNrrzh0BZ5DqpYNy
2xql7ndmqPZOZSbkhambTv37aGbQFXWwwG7CIbqhJmH+u0VTKfsQrN/lG2SC
aaOqriPnRbZjaMAFENZ5VX6DYcv2l8FmLWLWkd4bNsswiyUp9tKoPMeuOQC+
/jeYKR3duL/SCzwLEAClRS7DVX49SvxeHLdVC2Ifc65QIj7T1na2uW2tH9zm
OAlrAwXJYn2ryhXaWkFg6shz/qC3Zy0CfB0F8p8lpCFTqtY1fyyfpGK/qGm9
MOWm8dKWGlLnr7oerkAzs3EHq4o02dKOKgJ0kWbjIuJOvkmv4GJxXF/tOxyo
KGroXygOKO31ZazIcLgVWv5mMCOd+RyY5gelbYNgHgxrSH1B02VQixWgFg9A
LeWDzSlKz1CnApy7DD1KGGemzgbO1HdQltjPrx0peAbNisuJTOzyShrdUonx
fto/OzgUHw5/OT69fA8EDO+saXXm953NTsff7Pjtty3MoLYmNR6j8ND1N0qu
Ji8riXar/aPM4ZXDNgXdzbKkiw26ZK3l3a+TuJvkXWzV1R3RhTdOkENL86PH
Cb+CJPp7oC/LrR0fXh3xjRJywX1Mb8U5mNSZ+AzanN/LwkCcqoRL65Q8p0Ex
Z0B+jGgy7mkwsm0GBff7+RfxOex34eNP10UxzbsbG4hFTAbyJcwoF08LoNm4
HW9Qrxvkhtx4z51C649geEDznzAVWJF2pz689HvVTL52OIwKiqeqyW1Gf6p1
LDOJFYsyiVU6LCV1c3qz0q29p5mXryCucYv9dDrPovE1Hjo0BCx9WxC6rzDN
nj6CBh7O8VaZdQcsyLkDTj6nLwQOKEoGT+cFdZvjwQ/eNUJfPjW4CIcRnk70
Z9rwwuhSjHpOZ9lAXl3mYGS0b3IZbZ7KLR+/oDcYqFJfwmvSUXWYTaIC/QDT
WZbPArolzfcm8ln/vyjBh8QTOTGjQUjnUdAsV0YvWQNs51ySg4bm+uHyANaa
X89Dph6EjWLgxaVUTrdbA4UFg8LXufgYjsEYOcdg5pzicSUaYnlum/LrBzIr
j/x9XZEkJTwMQ0OOEnAfzfKGwiod3Sl2VKm17Kw+iCAMGMez5qN98R/wVxro
9va2lY0GfkgERkPhEBvwDN9u/EgePIpIgA6iIg/jkUYFXxyLaapJChoWOQYl
aHa2ptcYbPm6yf9i0CV+Vtma8DMladIfuAv5GidqMp9Mc52fCb+WUja9bnIn
r096f3rN9PBa5W16vXreJu6kLnnTOuIDkzc1+CPmbmrUpm7S1DcXq+ZvohZv
nvcne/mF8yfx5fnJI9JTotvUrDRuN00TAEQzxiApnKq8jYbHaRxvY18g5i5K
nsHFSfsMXRsSNpmqFPA6uZXEvYREMhmD02gZKE36wbI7KufsQjpvIUubAJ1G
6roruXZaFD/3zL8XSdvyElk4XiJly4vC8Yx0LS8Ex7NTtbwoPp6RpuVl4Ki8
9Ni/uxpethJfyTvk1kmgfZhI3vOR2vzJV6hSH9JVXFsNIL+w7pnOgdwLE1qI
TQKj3Mjxbc+gOuPQya8wIoQbsz0TkTaUqFQG1vzs2xkyfhp3kwfT6GH2B+gm
C1lLEEYLX5LFA4/N8Bab3PdVKCrt7mKNM1BQQryQk9ZSK/nC49MUKx2TsxWb
/BlWHjQ9v4UwVxL7wdYX9KNYJjjFzTfAa8l0iT0YUOLd6lDujrF8MPfdRw1H
2VcW/PHPKovGgTAHhpEEYWNjMU9wa5nRUPrpr/5oX7h38qU4CREWz1cDozPc
6DSLTKk1qViw62h6s1Ppnw/Q7YEX5mFZMC7ZbCpjiKM50Xbc2dxcRqP4O2bq
5fDic51M4I+S2nfEOg7QEJfyQI5P75bMUPFJaX7u7BdOkmajWY1mrGO/1VQW
DFxwyoIBZSx4xuhu6oOnw+AP68Gw33keJE0lLHQyB/edrfbO3srQhoP6Nftv
APdw//SRkI7i9DYO+iBEn7GwRxgb9pF6edyqTvl2hPJcPgMEdc/io5UPYmUw
8BKZDEt9Bgin1r7zuPGvU9hqwfr/54w+DG+kF+tpw5sYIlIWZFYSCjqRLhFO
GK0Sklq5pBXdqjckHNLKR8Bb4oBuPNGh/0hQHJ9qhaOi9+ImxJuCicqFwAlE
VSKECfQbjMO6NF42BqJo+K8yfWfeuotnTB80vX8tAqjHgJk0XRhS+FgRA//y
BPC06c+G0/8G1enTwflizWlX7kj1ihP8Kj7lgEB9JVTpTktmAAzsYz6Y8gSc
2S2cBEIrl4qyAphU99SntksAtCYugmY0hXuNeYyRnSXarWuv07IFAPJ7Jvg2
0Hjfn2fzG4Ffv3uvDrxKtmQBumQ0jiGaTX6L8QZp8NuzR+dtZ5lhgb+TV3rf
qpvRM3H4ml8wzUzvvLFsagtMCnfai/NXYv72ivWu4V8wZh0mHzMgY3Hl0b5U
NNtHDeYkGVt1UDxGes6o1P5Ro/m1xpn+eYXhuIPHDToMiyCqx++Ko8oeVh52
Ut2lH4NYuRlSQseVKYhI4Nk0tPJ4HOPrRyOfohCeMzJ3JY5HPrlbHw3DLIvA
Nskr+9ITYPh0cez/mubFo2EI8e7q88c/xG6esAZJmoQvthBuf4+FJu3TUfQL
wHEme7J2wO32ivRQp6c8hR6gq3NXPVkNC3HK25w/Dao6xxMA+aj6Ow8eI+Jt
jLwMIISRp8Agw8p9eTDwfEj2uUPM+YYdPhYeCjwcvwSdnkBPvfEjtkJrVf42
C7P5Cy3Lv1Nfj4UCr1xMX2I9etzRkznlpVChWeVp+OgDQF86LwDHB+7IjP/u
7btVx2+/1PjtR4+P0a4vMX3u57GjT7P06xw54wUgOKe+gDMeTQMMRQ423OQl
BMS53d1jYUE8vgQ5XFI/jx09SX2dVOD5MJymJkWBRRk7u8s8LfDzqkakbKb/
znhYNGZhaDwhCTNxISFYMPs0H6RZuNic1tbhwhnL2l6qONi6LPHV4CpeeEOK
3GZ7nW0KyJv11atLsEBvr1rjVl3UL6PjJWxxpeUxlkZxMK7Yc2UMrkQa3Ehw
h3R1USGpaS4utrYfAds0uvlOIftSNQ+/H8gGRcXB/hsBt+wo3z3SZ4eVPER7
XEyA7sjBRrzKwf8nGbBCd3Dl7YlyCva81gMZ+zoHvY3aeAWUXsg0zSq7H+zr
eM9dpTEL9A07xeycrhbWQUUAoOSgHAVvW1uNBeCR8V/nIf2NQdxuvbVBXGEh
mSDqcoLL6wer9GFjYxg9gRZqEqjWUgJ27mRFtXBtD7wQ15WJRhyK7PSKI5nY
dx2VSRjebbVriQBGn01fDBzpvLcu2j4WGPT2vxg4+ujgkQCtLpGqKapfQCxN
0ieQYgWSnEP7L1Wahrr4JBgppLTsFsbt0RdinJO5n5xZXK652sLqVt0eBAPw
fehHj3rMzZ487CTvP3pMeVf7iQM6yfUfO7Tb+lFAPERzTL2Yj/vx9OpMEi98
rUCsDyZSrxMH2HeSFj5tJxbynDEXYk+3xFkux9x2rTTCYYhzngiA1fY5IMQu
0a429keg2ucMKonuiTN3Wj8HDFXS4tEQyIb+m5WGXzB6NfBmtcFlu2eMXI34
WG1k2e5xI3MZxLIc8EztPnWzV8KzvGJfzdHzwjp9+gBaxepSLv9lx8s0BzR2
u/rGzRFeqddp8GttZbXp67/9UrS4kzTDYEYjIK7Mn2shqZkzSpJiZ/tHsfGm
UqWnqbKLoRw36jIVS3qz4fRhoxW70oUi9HsLVXSF6AfQLcdX5bmqlZQsWAtV
SsYoTqZMlwZN0ZlV4d2u8fT9rae8Ar4SPVcV0IX4PbCsAfHx/HPvVCR8d7YJ
mjGnfgnlNUqZTJMriesIWdJ+6T2dbdZ9EdDv9mPiZOpbfIfYl/faV8J+VU9a
iP0FRXFkYSQunkkF4GTWUdSO1VTslD7L3HH/JIypW/Uroaxmp1iIswcLvxRp
KX2WplT9tios9B1RGu9oRxe9X04OT696eB1VXP3p/FD/VFNTxHWNVHPtrKDk
Vnv9jnCybG6cRcVxAC1BwELtA4s57P9BxodSaeDVhjfJWp4NAoyvqlo8CQyV
F+ZFANGZ9WtB0cpFfV6n1ZStB0F7RI3kMv9gYQ6dY95BnpOaZgXGOOA6ylzX
RmU3TMpZ6r9HZnFmGoyKEP4fk2/b9FGPjYWU4SZoA2WLEtYhsql/nbe6R+Po
LPerA9f+jYBrrw5cf+5TZtbOM0BTWW6dpOsuNdVwVyWL0kp8tQy0hRx1VeGo
VoWlCG3kl6O7rNiru/PQAnLKqBUYi4Y0hcofYDAn2P474zMz7SR1iKQGH4uF
bhy3naIhmJir1rVkdTsP8+cNWCqvRuUhlg/pFBl58uAur6rC8tAp3dBWZEAo
QION6tImTIJ1jGKGXp1NFoL7HCbBch2myECVRdysfitwybEs1aXLQ6u+a4qn
wuAtRc1XTrWDIM5TLXy0YSyT0iDM35sW7CBM6h82sS3A40J6wxpEWx1t7bOD
iXIX4+zZyUQ6Dn/H2qCYxNqP02RcpbdqbsaVSG4p0I9QdspUJ//E1fHJ4YU4
+HTBVsMC97fOaE3pEk2OewY1DoNRKWOi6ymi1HXKaaOQuNZRN7brpoBuRStp
PxZipEz+UcI1A3xZNKHrUAsXJcjdqgTiZy4XoAzd+zLQMntjFeb2zlIAucSE
BvPnUndvKuCIDYEArT2werRw/bmVHZPI3s1cyUvRQvmG9YgDBRZwyiAyd0Bs
ZCHfzzFRUH+uFRsrfKamfIEWDVgQBvaYIgAO73r1LTaEyCcgIrHqSCn3rKrk
TI9V6xv1obPZFZubc/jf5hD+7xr+NxGb7VzWePjJf69/bb+DX99ORHsvb213
9tpv3+lO2nWddKCTd7vtt23dSRs62b6GdZiIrZ28tfd2Z6ttOunUdbKdt9rv
trc2t3QnW/ArdNJpAyRbeWu33dnZMp1s1XUCAG/t7e1s7upOduDXvWux3ZmI
zi5O521n13SyXdNJGwDe3d3ttDVO2h2Yzi5Asj0Rb7dxOptvLZy8relkCwB+
+3Z7e0vjpPMWOoFft99N4H8wxGa7DThRvZymVhGB8hJTUvo8lbm9ZUV5Wdul
CKfa0ydfYZbRNKro6/vZRCzhKMTFp4+H4vD06uJP4uDw6Pj0uCIjXeGoSy8/
YBnmlWLTpv53XY1t2fpZpbZVJzqvqSpkTon2EnVxTJadCKaY+iaLqH6EdUhB
UpMhdqQlQ7FUWtoJh6qSmJNaPlYCcyVzUxNJZ06VNVt05lBM6064pfxpsJsY
+lAp2E2Buqapur7ZEmd4bnAb5aGskBYFsniN6YJKx2W4XqVxZQlnXfkVeGiz
5Uz+OyB5Tb8LktQvtsaoRlKo06urHPrlSslzsR61wpZMba+jV+tP7Fpa7jw7
35Tq6NlJyV4OItWTrpBAJtRDJRd2FZEadcfXyYK6pLc78oJTDppaLKoGAV0k
MWRicuDJfFVYULHUvww+7C45P6PSL+pwzPRu6c16lEr355Jhu3bH61Z90bng
gB0sH2XFPcuxrf5qQuO6pelFXKRMVzDWJRpML1eWTMbmsvLGGMVuIe0pSzwf
yeK6BjB59mLPtEJfFlw2PDobWNN0Z9fv4mLOVokSktUgUlRaZGtMpOCWJOGW
PNzoil7dsPXnHfaJB8kPWWB9FYBMH4GDX3sP0duQI/KdxNpK8pvCmLC5hkv3
A8UTTV2uWp3WKMksF47L4hI6DLRaFkfDVnWHcrJ610AdPw9oZjR9cs5C0ZTl
UsfQ+szZgF05lzYct8qM9J652GR79GTK+7DEOgqcRPOuZn7RNpOhnVPu5qMo
w2Isg8GM5iAFTXU1LX4BDo0tRTS0QJHHoHzbM5/1WWOyiFUPlLfMQw3jppiE
YH1ZFQZZgCuAJWSWiMpMxgYEnYrkqN7QpNXz4smYljwrC4gPwGW3lF9OaeGG
OWGKVrX36+DG6kgNh351PgsmLQWLc6l6LTEengcEwNziW0ooG2o8p1k0jjCO
l+tG1NBSXRr6KpPIQIQn0FWNeG/WUDm5AQEPsgY9g+vseE4EMcUpYJaR9DZx
54RlgOwE+XoymH14jfRD7b1glVsp/0un0VMFhuTOYp3W66pHzlbumuGCzAPb
bohMpeeC5LOiMFVCZ9NqjFY85scmAeHoqOoqTTWIU71m8YncbsxguapyhfkP
Uc/Iw8GM6F4ynVKALaGFzol2DSFVywRUyUhGVGgywqmutVobzoJR8pgs4iok
6cRPMx+zTK+3muK1Dsl93VjT/Quubu6rtASWPr2mAoebKqwWVZQKrqiOng2E
JpF6ckAfkg0ylecrVO1YLsmnQdV93TvTxgbryyYK0L5uNJytXWAO2o0FZRUW
I2RNzl3XtpWboTvV+8cz98lZt6olVflxUbWol2HNajxNLxtzFnUrQ/XVH63i
fYWsxGowqyq1BqqpzbrGyGmyHYoMh/HWmhU1zSMl5aYX08m6LryufmxKtTQq
V/KcYIIHLJxI+SztnY6UCTYSePsaNqqMWFP7osqJKlLnCRJ9/6DXFQ8F5LSq
VLCosMYLkQHFktYsfOAsPZX/ZJO/SgTItlVC4CxBBz2rCJpt99pqKLEXVeqU
rf81fAbSwFSnArhYtgdBrswjyvK461fvnnhgu62tYqk3YU4BLUu7iTAYXBuE
DE25uMDZk636hqa8ZWhpfibHu5pr09X+VEVhLnepM8zjH75nDNOHTgpkoEmN
B8F2H5j5yql+R4d2mpDc0B6XlGp9T4B73dg+plxY4HNktkBVjZIi4cQ6BnIN
vjSp5L2MpkKQexwgRTFNDcO1qhPbaeWYttW6djXmYn0U1BPkKEv/aiyePu1d
T9LS7CyDyZljdROwq+utcqa3t7YUVrycb1VOlofJdunkJZbFCvYEaUQLlSG6
+/e6ogotex8Ng1V1RANopby0VYDXGByt56hMl7qsrOmwaRs3aK1xufY+iihX
lGxscLELZEot2zi/jIV4VfRwlYV/4Cy3fuEPrjANFNk561dC3x3GhTCIlafs
jRpb4dYFj8KBnOVfBzW3ymlNZ/nr/l4/EC752k3BsISgXhoCjhsFItb4rluU
lVeA6zuqNTh5whro4pUv4j6qh/JIJ9JeP3VBXAaZEzrhglcNxqgQNMkXK5Jk
OX339DiqxgRF1pRCatQWkqsYGstwgInXsuioHPXEGSzMvmabzpXinstP1ORU
sf768ul9Rs5yHcJU5igJm0qLodFIAINFas0LFI4BepnCrwOyjnHfpvTaJVcn
13+v4XFTgfTRx4N24floRLa10b07f5G9+qLdElKe4isMqa3ORfISBbks8VSC
SVI6N1Cq98PiNgzRS+hoczbw/gJ3R13B1FUkbnv5kp0wMSAL5fAhLoIkTGd5
bELBQ6oaAqO1hHrZic8gd1nnL3oboFgTkNm9X9TMrbIqsPfMCjzfRKvT9LBg
eso5FbB3lAqozCk4wEWRqqSWVSrFagyxaeeEJS13JKpwFcrbQDFESsxY8TbU
YROWU9oiYW7Tg3TCMiDICFGOEmm4CPi6mrOrTOD/zQ3tgWVLystWGxdVz2l2
Bd7/rzZIyWIptxmWQgLR0moBtirqaX1YB4U7sPgwvidcE9znqGKMEroD3tF6
+38oMQrHBTuW0gCDH/mezo/2IzOZyuPSXRb8k0F+srix9cOLrfrDS275gOvk
+SLEEnJr1CGK8MZjAHc3I5dTQcfkJYg5IHoUSZPXvcPgLrCNsChxLlf805Gm
6kvbQdsr4fDA3J8wpQAoIF1GVdI10kxe/pAB7dYFYP5zL4CoAPMm/qsLAcTh
qFABVDzC69zthSl9CertixjfF+bL90pWo1/Gs54R1cVSdzSAsvmSDd38aUoU
l4SivOMBGOULxjJqLaql36WCyqrayASxVXct8rvztGLWJ/bykV/v+KDFlR2P
D8pRQgH9oNLfUJ+B4B5UCw4ycPxu5El1Ex6w9SSf1wT7ofza6izdrtWA1Lpp
qdBa9ZslWIq4SaeFEdI1ltSwTzr4cKnOrpOQ1YViLNjQNlutrc5q+5mCPJbx
GFL4sinHU9iUjhVBVX0HkaXvWrH2S9y2PbWW1SW01y6uCQlRQxFM348bV1mr
BVvm7q4vb+bje0Yn1sW/5UkBYcQ5KHAp0F1192TApmGtFrBSkXCNP0MRg8o9
UkfORiNf1QV07zc7cpFGrfVY10l2GrJa0LA6oPVOdbiak5aFg7ll4J3xFspq
dWNGn+4GvCa4mLOkEm6S1+9iC465e/rwBbuzC/nSgxK8aWY76/GvUt7SHbfe
lxTqM57cHTIp3/J3+y+xs12pnHNNRJkiuQdZPWC+yG1YKkxvH0fl6tZWpg1x
7VIqTaKCszok/bOFw7330/7ZAYbRH1y+9/4Bf963rnh1FI19EgFFVMThz1xd
09Q7BaHyShyDeLXuEyBMs9zzfvo33z89uzoUV2d0AHN4cHx1dtHFqU7SG64q
jguWhToBZz+ESREGprN+rEvqBIDsEPTiIJeGpEQV6imcsne70xK+/97zPDpw
Uv2B0kgFyEnTI7Bw+VCxSWhTMFArK9XTnjsVpUekFOnTYJnFz3ItYEsgEgoc
T0cevaxKWPoHGehOXBIcg5rMKTWXrMUauFYpG+/bN0oxvN25v2/xRT+LVik6
rQS1KmWuZhzlHvpxQJ2jGKsAFj0vTH16eJ1OLtXdI3k7k+pg49THKsPOEOHO
JYJhVxXnsKeTxLIvmSBD8LTRMeShE+YmGmIcsAsnFTYXwzTkwBn8cQ5rP0yz
nIP6mV89hBHGOpplaAJMUjzAByEQjkZY9OAa1r+P3jtYioQ0eLAHMHYUm2LZ
ejwY4VnR/QCSgSoa7xaLrM+oOi+tKaED5TPgfkb5MZl0ZGyPRmKQ8+oplylH
bGPe4lkoI7jhBQ/IIohTxsRNEMW0v1ZILJNSSe4kiNcLltIeeieD4U0k730a
PKdkDZW7wiDC8CvelvC83gCpnOKEU2FRUFOsEW3cok1JCjmVGg5v8ZQV54Ri
BKO9SMnMFb2ME4HpU5XCxyjFy9zpgEMkGC4MYSTM90EyjSIpGJOEow3AwpEC
EiHlwhmwAjD8UMWIor6AaPLQossiQyxUJzkMh31M/mHGmgCi2P+ncBEONbti
kemMwmQAr4DWY7L0ZlNl51mkKWfNqnXuwQsYa0eYsomIhQ3CjhGuxRog+g3G
HCUkDvFlBYaJ0NbXc5SfmZgkHcCotK96KPwkdZq5skxzHkNXCImC3iow7dGB
9v+8PDultvsfzi7E+ijF1UU4/M095t0GwIuyuXfaozzbeilzKSPVcsLQY6Aj
pAm8vfnp4piJA79Q2CZX7wb+8F69+j//G18AosUm3F+1O+m3o6GLVPfPbg0N
6SidZTyaDLNYI5b8j5OPqvv5GlPz1s7e3v191/Pe4/tdgGGWJd0oLEZdOl7J
u18ncTfJu3OwIug5bVn4vgIU8/2hSjsosPkVicPLX1r4CgyIz043ej/KlSD4
gQ1xphwKjUAl6BGfBqQgMyYIOydc2/wUb3EtR4vCcg0abDxrdJS7z9dkJxip
g3jZ2exswj6Bk0DgugJgsv+rMSHUKwR/V7+wMhq5wqI7gPpN78amX12O/LHV
xmXCeCTcy3Awy9DFXyVehy7dKK3Cwbm56kTFDgICghNcoFSJqI4cyDslyLEY
OOvON1GgcqThsWgw5m3KSJt8hrpfLk4Pr/bPTo9gQf4NV6Sz3b6/Rzl/cXhp
/7C3uY1LRZQHC4/3MlVLjqqQUYEYkIs7FjrKqWYQ/drUYkIf0fpF6msBVG0G
3V3ys8tr1JzWLy9/bRggOyVYNLQamF+vrs4vnzTu1cdL4clZb2/vEIHiUKcS
nbCeo2isjgl6hHEiiQyULqaV9dPe/okCd2+LcAqox72D0SRD/Kl8Ax1cypWj
BZ5iDPNgFgeZxrG9ICDsM97r6H6rhAbWnO4a0DaGYUdmF6/rRGuJ+jIQC01p
8LUU9xu5TRtLHP1dzoBNCHVdzFECmblR9Ydpl8wJ3hsd+0H0cvQ8xIG6oUf3
QrPBdVSEHP6q+eHbt2P/oEWcHU9vg8S3X0N9QZqS8rwwA/5sigH8U+DB4Ww6
DDi1H4Abh4XMWqAKaBBGLV6RcpToLA/lFSN9Foln0maXvE31rXVSxMnKSDP9
grTO1DvS70KwwsaJ4XpAmoD0f5DdUjZ/2N6maVi/rcvLfg1BE4UnP/zMfz+I
N/Z7cq0aP8kG7+/I9yTEHTy5U3cG39d3zUgTdyeEmOwOfpX01DTUhPnnzy4O
8bMLfEuCxvi2ABQKvaX3ra/6EqR89hM0vBMX4n+IA4Acvsjn8On9ndiH50fi
Dr/U9sGYJUaWcYvyjnOeTsiLzsftlgJlZKS8qKzLe1DlbVm8l4I0g6LA4ARK
eDC4ht2Hgzn1QJQkCG+xYQkhdRnO1Fwl5z4aXFTwicwyLv1OtJeRTcmXsHXq
EX0kyXt9pt2doJRGRObYNnLJVcWLDsKsYEuQM9hI2YPGUC6F3WiGxzhZqMoO
8I3JJsaE40Wiwuh7uQ5y1MKANic5MDPUkIzBKFd7XhBNVGA47LzBNAdpx/xI
XGhvjzBgPCPjQIKZRePrgg1SxgYGmoKGgJuuSczEoPBkgllxTXnbKfQijr6E
8gZh8kUcpJOIPMTiQ4BGW9wU+0EGKE3EB6SEBMz345sAq5LhzZLw73h+EH4N
6LzhPIzTG3WlBcyiARhBgDkieoI4GWorASYynaF/t8c7Pt41RQhY5nswKO4e
/TAbN8VVOoG+i8G1hz0cotvkj/MEKMwai0RmYoluvDpOFthAJfHqz6JYJd9g
KY6qn+cBQwi0Tbz/C9i2CBOz3gAA

-->

</rfc>

