<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" ipr="trust200902" submissionType="IETF" consensus="true" number="9441" docName="draft-ietf-lpwan-schc-compound-ack-17" category="std" obsoletes="" updates="8724,9363" symRefs="true" sortRefs="true" tocInclude="true" xml:lang="en" prepTime="2023-07-26T13:31:02" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-lpwan-schc-compound-ack-17" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9441" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="SCHC Compound ACK">Static Context Header Compression (SCHC) Compound Acknowledgement (ACK)</title>
    <seriesInfo name="RFC" value="9441" stream="IETF"/>
    <author fullname="Juan Carlos Zúñiga" initials="JC." surname="Zúñiga">
      <organization abbrev="Cisco" showOnFrontPage="true">Cisco</organization>
      <address>
        <postal>
          <street/>
          <city>Montreal</city>
          <code>QC</code>
          <country>Canada</country>
        </postal>
        <email>juzuniga@cisco.com</email>
      </address>
    </author>
    <author initials="C." surname="Gomez" fullname="Carles Gomez">
      <organization showOnFrontPage="true">Universitat Politècnica de Catalunya</organization>
      <address>
        <postal>
          <street>C/Esteve Terradas, 7</street>
          <street>08860 Castelldefels</street>
          <country>Spain</country>
        </postal>
        <email>carles.gomez@upc.edu</email>
      </address>
    </author>
    <author initials="S." surname="Aguilar" fullname="Sergio Aguilar">
      <organization showOnFrontPage="true">Universitat Politècnica de Catalunya</organization>
      <address>
        <postal>
          <street>C/Esteve Terradas, 7</street>
          <street>08860 Castelldefels</street>
          <country>Spain</country>
        </postal>
        <email>sergio.aguilar.romero@upc.edu</email>
      </address>
    </author>
    <author initials="L." surname="Toutain" fullname="Laurent Toutain">
      <organization showOnFrontPage="true">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>
    <author initials="S." surname="Céspedes" fullname="Sandra Céspedes">
      <organization showOnFrontPage="true">Concordia University</organization>
      <address>
        <postal>
          <street>1455 De Maisonneuve Blvd. W.</street>
          <city>Montreal QC, H3G 1M8</city>
          <country>Canada</country>
        </postal>
        <email>sandra.cespedes@concordia.ca</email>
      </address>
    </author>
    <author initials="D." surname="Wistuba" fullname="Diego Wistuba">
      <organization showOnFrontPage="true">NIC Labs, Universidad de Chile</organization>
      <address>
        <postal>
          <street>Av. Almte. Blanco Encalada 1975</street>
          <street>Santiago</street>
          <country>Chile</country>
        </postal>
        <email>research@witu.cl</email>
      </address>
    </author>
    <date month="07" year="2023"/>
    <workgroup>lpwan</workgroup>
    <keyword>SCHC</keyword>
    <keyword>LPWAN</keyword>
    <keyword>IoT</keyword>
    <keyword>Fragmentation</keyword>
    <keyword>Reliable Delivery</keyword>
    <keyword>Link Layer Protocols</keyword>
    <keyword>Cross-Layer Protocols</keyword>
    <keyword>Adaptation Layer</keyword>
    <keyword>Acknowledgment</keyword>
    <keyword>Sigfox</keyword>
    <keyword>LoRaWAN</keyword>
    <keyword>NB-IoT</keyword>
    <keyword>Compound ACK</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document updates the Static Context Header Compression (SCHC) and fragmentation protocol (RFC 8724) and the corresponding YANG module (RFC 9363). It defines a SCHC Compound Acknowledgement (ACK) message
format and procedure, which are intended to reduce the number of response transmissions (i.e., SCHC ACKs) in the ACK-on-Error Mode, by accumulating bitmaps of several windows in a single SCHC message
(i.e., the SCHC Compound ACK). </t>
      <t indent="0" pn="section-abstract-2">Both the message format and procedure are generic, so they can be used, for instance, by any of the four Low-Power Wide Area Network (LPWAN) technologies defined in RFC 8376, which are Sigfox, Long Range Wide Area Network (LoRaWAN), Narrowband Internet of Things (NB-IoT), and IEEE 802.15.4w.


</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9441" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2023 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-schc-compound-ack">SCHC Compound ACK</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-schc-compound-ack-message-f">SCHC Compound ACK Message Format</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-schc-compound-ack-behavior">SCHC Compound ACK Behavior</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.2.2">
                  <li pn="section-toc.1-1.3.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.2.2.1.1"><xref derivedContent="3.2.1" format="counter" sectionFormat="of" target="section-3.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ack-on-error-mode-replaces-">ACK-on-Error Mode (Replaces Section 8.4.3, RFC 8724)</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-schc-compound-ack-example">SCHC Compound ACK Example</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-schc-compound-ack-yang-data">SCHC Compound ACK YANG Data Model</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-schc-yang-data-model-extens">SCHC YANG Data Model Extension</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-schc-yang-tree-extension">SCHC YANG Tree Extension</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-schc-compound-ack-parameter">SCHC Compound ACK Parameters</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-uri-registration">URI Registration</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-yang-module-name-registrati">YANG Module Name Registration</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.9.2">
              <li pn="section-toc.1-1.9.2.1">
                <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.2">
                <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent="9.2" format="counter" sectionFormat="of" target="section-9.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="Introduction" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">The Generic Framework for Static Context Header Compression (SCHC) and Fragmentation specification <xref target="RFC8724" format="default" sectionFormat="of" derivedContent="RFC8724"/> describes two mechanisms:
i) a protocol header compression scheme and ii) a frame fragmentation and loss recovery functionality. Either can be used on top of radio technologies, such as the four Low-Power Wide Area Networks (LPWANs) listed in <xref target="RFC8376" format="default" sectionFormat="of" derivedContent="RFC8376"/>, which are Sigfox, LoRaWAN, NB-IoT, and IEEE 802.15.4w. These LPWANs have similar characteristics, such as star-oriented topologies, network architecture, and
connected devices with built-in applications.
</t>
      <t indent="0" pn="section-1-2">SCHC offers a great level of flexibility to accommodate all these LPWAN technologies. Even though there are a number of similarities between
them, some differences exist with respect to the transmission characteristics, payload sizes, etc. Hence, there are optimal parameters and modes of operation
that can be used when SCHC is used on top of a specific LPWAN technology.
</t>
      <t indent="0" pn="section-1-3">
   In ACK-on-Error mode in <xref target="RFC8724" format="default" sectionFormat="of" derivedContent="RFC8724"/>, the SCHC Packet is fragmented into pieces called tiles, where all tiles are the same size except for the last one, which can be smaller. Successive tiles are grouped in windows of fixed size.
    A SCHC Fragment carries one or several contiguous tiles, which may span multiple windows. When sending all tiles from all windows, the last tile is sent in an All-1 SCHC Fragment. The SCHC receiver will send a SCHC ACK reporting on the reception of exactly one window of tiles after receiving the All-1 SCHC Fragment. In case of SCHC Fragment losses, a bitmap is added to the failure SCHC ACK, where each bit in the bitmap corresponds to a tile in the window. If SCHC Fragment losses span multiple windows, the SCHC receiver will send one failure SCHC ACK per window with losses.
</t>
      <t indent="0" pn="section-1-4">This document updates the SCHC protocol for frame fragmentation and loss recovery. It defines a SCHC Compound ACK format and procedure, which
are intended to reduce the number of response transmissions (i.e., SCHC ACKs) in the ACK-on-Error mode of SCHC. The SCHC Compound ACK extends the failure SCHC ACK message
format so that it can contain several bitmaps, with each bitmap being identified by its corresponding window number.
The SCHC Compound ACK is backwards compatible with the SCHC ACK as defined in <xref target="RFC8724" format="default" sectionFormat="of" derivedContent="RFC8724"/>, and introduces flexibility, as the receiver has the capability to respond to the All-0 SCHC Fragment, providing more Downlink opportunities and therefore adjusting to the delay requirements of the application.
</t>
    </section>
    <section anchor="terminology" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-terminology">Terminology</name>
      <t indent="0" pn="section-2-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
      </t>
      <t indent="0" pn="section-2-2">It is assumed that the reader is familiar with the terms and mechanisms defined in <xref target="RFC8376" format="default" sectionFormat="of" derivedContent="RFC8376"/> and <xref target="RFC8724" format="default" sectionFormat="of" derivedContent="RFC8724"/>.
</t>
    </section>
    <section anchor="schc-compound-ack" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-schc-compound-ack">SCHC Compound ACK</name>
      <t indent="0" pn="section-3-1">The SCHC Compound ACK is a failure SCHC ACK message that can contain several bitmaps, with each bitmap being identified by its
corresponding window number.
    In <xref target="RFC8724" format="default" sectionFormat="of" derivedContent="RFC8724"/>, the failure SCHC ACK message only contains one bitmap corresponding to one window.
    The SCHC Compound ACK extends this format, allowing more windows to be acknowledged in a single ACK and reducing the total number of failure SCHC ACK messages, especially when fragment losses are present in intermediate windows.
</t>
      <t indent="0" pn="section-3-2">The SCHC Compound ACK <bcp14>MAY</bcp14> be used in fragmentation modes that use windows and that allow
reporting the bitmaps of multiple windows at the same time; otherwise, the SCHC Compound ACK <bcp14>MUST NOT</bcp14> be used.
</t>
      <t indent="0" pn="section-3-3">The SCHC Compound ACK:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-4">
        <li pn="section-3-4.1">provides feedback only for windows with fragment losses,</li>
        <li pn="section-3-4.2">has a variable size that depends on the number of windows with fragment losses being reported in the single SCHC Compound ACK,</li>
        <li pn="section-3-4.3">includes the window number (i.e., W) of each bitmap,</li>
        <li pn="section-3-4.4">might not cover all windows with fragment losses of a SCHC Packet, and</li>
        <li pn="section-3-4.5">is distinguishable from the SCHC Receiver-Abort.</li>
      </ul>
      <section anchor="schc-ack-format-1B" numbered="true" removeInRFC="false" toc="include" pn="section-3.1">
        <name slugifiedName="name-schc-compound-ack-message-f">SCHC Compound ACK Message Format</name>
        <t indent="0" pn="section-3.1-1"><xref target="success-ack-1byte" format="default" sectionFormat="of" derivedContent="Figure 1"/> shows the success SCHC ACK format, i.e., when all fragments have been correctly received (C=1), as defined in <xref target="RFC8724" format="default" sectionFormat="of" derivedContent="RFC8724"/>. </t>
        <figure anchor="success-ack-1byte" align="left" suppress-title="false" pn="figure-1">
          <name slugifiedName="name-schc-success-ack-message-fo">SCHC Success ACK Message Format, as Defined in RFC 8724</name>
          <artwork name="" type="" align="left" alt="" pn="section-3.1-2.1">
               |--- SCHC ACK Header ---| 
               |        |--T-|--M--| 1 |
               +--------+----+-----+---+~~~~~~~~~~~~~~~~~~
               | RuleID |DTag|  W  |C=1| padding as needed
               +--------+----+-----+---+~~~~~~~~~~~~~~~~~~	  
</artwork>
        </figure>
        <t indent="0" pn="section-3.1-3">In case SCHC Fragment losses are found in any of the windows of the SCHC Packet, the SCHC Compound ACK <bcp14>MAY</bcp14> be used.
The SCHC Compound ACK message format is shown in Figures <xref target="compound-ack-1byte" format="counter" sectionFormat="of" derivedContent="2"/> and <xref target="compound-ack-less-M-padding" format="counter" sectionFormat="of" derivedContent="3"/>.

</t>
        <figure anchor="compound-ack-1byte" align="left" suppress-title="false" pn="figure-2">
          <name slugifiedName="name-schc-compound-ack-message-fo">SCHC Compound ACK Message Format. Losses are found in windows W = w1,...,wi, where w1 &lt; w2 &lt;...&lt; wi.
</name>
          <artwork name="" type="" align="left" alt="" pn="section-3.1-4.1">
  |--- SCHC ACK Header --|- W=w1 -|...|---- W=wi -----|
         |--T-|---M--|-1-|        |...|---M--|        |---M--|
  +------+----+------+---+--------+...+------+--------+------+~~~~~+
  |RuleID|DTag| W=w1 |C=0| Bitmap |...| W=wi | Bitmap |00..00| pad |
  +------+----+------+---+--------+...+------+--------+------+~~~~~+
                            next L2 Word boundary -&gt;|&lt;-- L2 Word -&gt;|
</artwork>
        </figure>
        <t indent="0" pn="section-3.1-5">The SCHC Compound ACK groups the window number (W) with its corresponding bitmap.
Window numbers do not need to be contiguous. However, the window numbers and their corresponding bitmaps included in the SCHC Compound ACK message <bcp14>MUST</bcp14> be ordered from the lowest-numbered to the highest-numbered window.
Hence, if the bitmap of window number zero is present in the SCHC Compound ACK message, it <bcp14>MUST</bcp14> always be the first one in order and its window number <bcp14>MUST</bcp14> be placed in the SCHC ACK Header.</t>
        <t indent="0" pn="section-3.1-6">If M or more padding bits would be needed after the last bitmap in the message to fill the last layer two (L2) Word, M bits at 0 <bcp14>MUST</bcp14> be appended after the last bitmap, and then padding is applied as needed (see <xref target="compound-ack-1byte" format="default" sectionFormat="of" derivedContent="Figure 2"/>).
Since window number 0 (if present in the message) is placed as w1, the M bits set to zero can't be confused with window number 0; 
therefore, they signal the end of the SCHC Compound ACK message.
</t>
        <t indent="0" pn="section-3.1-7"> <xref target="compound-ack-less-M-padding" format="default" sectionFormat="of" derivedContent="Figure 3"/> shows the case when the required padding bits are strictly less than M bits.
    In this case, the L2 Maximum Transmission Unit (MTU) does not leave room for any extra window value, let alone any bitmap,
	thereby signaling the end of the SCHC Compound ACK message.
</t>
        <figure anchor="compound-ack-less-M-padding" align="left" suppress-title="false" pn="figure-3">
          <name slugifiedName="name-schc-compound-ack-message-for">SCHC Compound ACK Message Format with Less than M Padding Bits. Losses are found in windows W = w1,...,wi, where w1  &lt; w2  &lt;...&lt; wi.</name>
          <artwork name="" type="" align="left" alt="" pn="section-3.1-8.1">
  |--- SCHC ACK Header --|- W=w1 -|...|---- W=wi -----|
         |--T-|---M--|-1-|        |...|---M--|        |---M--|
  +------+----+------+---+--------+...+------+--------+~~~+
  |RuleID|DTag| W=w1 |C=0| Bitmap |...| W=wi | Bitmap |pad|
  +------+----+------+---+--------+...+------+--------+~~~+
                                  next L2 Word boundary -&gt;|
   </artwork>
        </figure>
        <t indent="0" pn="section-3.1-9">The SCHC Compound ACK <bcp14>MUST NOT</bcp14> use the Compressed Bitmap format for intermediate windows/bitmaps (i.e., bitmaps that are not the last one of the SCHC Compound ACK message); therefore, intermediate bitmap fields <bcp14>MUST</bcp14> be of size WINDOW_SIZE.
Hence, the SCHC Compound ACK <bcp14>MAY</bcp14> use a Compressed Bitmap format only for the last bitmap in the message.
The optional usage of this Compressed Bitmap for the last bitmap <bcp14>MUST</bcp14> be specified by the technology-specific SCHC Profile.</t>
        <t indent="0" pn="section-3.1-10"> The case where the last bitmap is effectively compressed corresponds to <xref target="compound-ack-less-M-padding" format="default" sectionFormat="of" derivedContent="Figure 3"/>,
    with the last bitmap ending (by construction) on an L2 Word boundary, therefore resulting in no padding at all.</t>
        <t indent="0" pn="section-3.1-11"><xref target="compound-ack-compressed-bitmap-1" format="default" sectionFormat="of" derivedContent="Figure 4"/> illustrates a bitmap compression example of a SCHC Compound ACK,
    where the bitmap of the last window (wi) indicates that the first tile has not been correctly
    received.
    Because the compression algorithm resulted in effective compression, no padding is needed.
        </t>
        <figure anchor="compound-ack-compressed-bitmap-1" align="left" suppress-title="false" pn="figure-4">
          <name slugifiedName="name-schc-compound-ack-message-form">SCHC Compound ACK Message Format with Compressed Bitmap and No Padding Added. Losses are found in windows W = w1,...,wi, where w1 &lt; w2 &lt;...&lt; wi.</name>
          <artwork name="" type="" align="left" alt="" pn="section-3.1-12.1">
  |--- SCHC ACK Header --|- W=w1 -|...|-------- W=wi -------|
         |--T-|---M--|-1-|        |...|---M--|
  +------+----+------+---+--------+...+------+--------------+
  |RuleID|DTag| W=w1 |C=0| Bitmap |...| W=wi |0 1 1 1 1 1 1 |
  +------+----+------+---+--------+...+------+--------------+
                         next L2 Word boundary -&gt;|

                 SCHC Compound ACK with Uncompressed Bitmap

  |--- SCHC ACK Header --|- W=w1 -|...|-- W=wi --|
         |--T-|---M--|-1-|        |...|---M--|
  +------+----+------+---+--------+...+------+---+
  |RuleID|DTag| W=w1 |C=0| Bitmap |...| W=wi |0 1|
  +------+----+------+---+--------+...+------+---+
                         next L2 Word boundary -&gt;|

        Transmitted SCHC Compound ACK with Compressed Bitmap
</artwork>
        </figure>
        <t indent="0" pn="section-3.1-13"><xref target="compound-ack-compressed-bitmap" format="default" sectionFormat="of" derivedContent="Figure 5"/> illustrates another bitmap compression example of a SCHC Compound ACK,
    where the bitmap of the last window (wi) indicates that the second and the fourth tiles have not been correctly
    received.
    In this example, the compression algorithm does not result in effective compression of the last bitmap.
    Besides, because more than M bits of padding would be needed to fill the last L2 Word, M bits at 0 are appended to the message before padding is applied.
        </t>
        <figure anchor="compound-ack-compressed-bitmap" align="left" suppress-title="false" pn="figure-5">
          <name slugifiedName="name-schc-compound-ack-message-forma">SCHC Compound ACK Message Format with Compressed Bitmap and Padding Added to Reach the L2 Boundary. Losses are found in windows W = w1,...,wi, where w1 &lt; w2 &lt;...&lt;wi.</name>
          <artwork name="" type="" align="left" alt="" pn="section-3.1-14.1">
 |--- SCHC ACK Header --|-W=w1-|...|-------- W=wi -------|
        |--T-|---M--|-1-|      |...|---M--|
 +------+----+------+---+------+...+------+--------------+
 |RuleID|DTag| W=w1 |C=0|Bitmap|...| W=wi |1 0 1 0 1 1 1 |
 +------+----+------+---+------+...+------+--------------+
                    next L2 Word boundary -&gt;|
 
                 SCHC Compound ACK with Uncompressed Bitmap

 |--- SCHC ACK Header --|-W=w1-|...|-------- W=wi -------|
        |--T-|---M--|-1-|      |...|---M--|              |---M--|
 +------+----+------+---+------+...+------+--------------+------+~~~+
 |RuleID|DTag| W=w1 |C=0|Bitmap|...| W=wi |1 0 1 0 1 1 1 |00..00|pad|
 +------+----+------+---+------+...+------+--------------+------+~~~+
                    next L2 Word boundary -&gt;|&lt;------ L2 Word ------&gt;|
 
                  Transmitted SCHC Compound ACK
</artwork>
        </figure>
        <t indent="0" pn="section-3.1-15">If a SCHC sender gets a SCHC Compound ACK with invalid window numbers, such as duplicate W values or W values not sent yet, it <bcp14>MUST</bcp14> discard the whole
	SCHC Compound ACK message.</t>
        <aside pn="section-3.1-16">
          <t indent="0" pn="section-3.1-16.1">Note that SCHC Compound ACKs are distinguishable from the Receiver-Abort message in the same way that regular SCHC ACKs are distinguishable, since the Receiver-Abort pattern never occurs in a legitimate SCHC Compound ACK <xref target="RFC8724" format="default" sectionFormat="of" derivedContent="RFC8724"/>.</t>
        </aside>
      </section>
      <section anchor="schc-compound-ack-behavior" numbered="true" removeInRFC="false" toc="include" pn="section-3.2">
        <name slugifiedName="name-schc-compound-ack-behavior">SCHC Compound ACK Behavior</name>
        <t indent="0" pn="section-3.2-1">The SCHC ACK-on-Error behavior is described in <xref target="RFC8724" section="8.4.3" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8724#section-8.4.3" derivedContent="RFC8724"/>. The present document slightly modifies this behavior.  In the baseline SCHC specification, a SCHC ACK reports only one bitmap for the reception of exactly one window of tiles. The present SCHC
Compound ACK specification extends the SCHC ACK message format so that it can contain several bitmaps, with each bitmap being identified by its corresponding
window number.</t>
        <t indent="0" pn="section-3.2-2">As presented in <xref target="RFC8724" format="default" sectionFormat="of" derivedContent="RFC8724"/>, the SCHC ACK format can be considered a special SCHC Compound ACK case in which it reports only the tiles of one window. Therefore, the SCHC Compound ACK is backwards compatible with the SCHC ACK format presented in <xref target="RFC8724" format="default" sectionFormat="of" derivedContent="RFC8724"/>.
The receiver can assume that the sender does not support the SCHC Compound ACK if, although the SCHC Compound ACK sent by the receiver reports losses in more than one window, the sender does not resend any tiles from windows other than the first window reported in the SCHC Compound ACK. In that case, the receiver can send SCHC Compound ACKs with only one window of tiles.</t>
        <t indent="0" pn="section-3.2-3">Also, some flexibility is introduced with respect to <xref target="RFC8724" format="default" sectionFormat="of" derivedContent="RFC8724"/> in that the receiver has the capability to respond (or not) to the All-0 with a SCHC Compound ACK, depending on certain parameters, like network conditions, sender buffer/cache size, and supported application delay. Note that even though the protocol allows for such flexibility, the
actual decision criteria is not specified in this document. The application <bcp14>MUST</bcp14> set expiration timer values according to when the feedback is expected to be received, e.g., after the All-0 or after the All-1.</t>
        <t indent="0" pn="section-3.2-4"><xref target="ACK-on-Error-subsection" format="default" sectionFormat="of" derivedContent="Section 3.2.1"/> (and its subsections) replaces the complete Section <xref target="RFC8724" section="8.4.3" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8724#section-8.4.3" derivedContent="RFC8724"/> (and its subsections) of <xref target="RFC8724" format="default" sectionFormat="of" derivedContent="RFC8724"/>.
</t>
        <section anchor="ACK-on-Error-subsection" numbered="true" removeInRFC="false" toc="include" pn="section-3.2.1">
          <name slugifiedName="name-ack-on-error-mode-replaces-">ACK-on-Error Mode (Replaces Section 8.4.3, RFC 8724)</name>
          <t indent="0" pn="section-3.2.1-1">The ACK-on-Error mode supports L2 technologies that have variable MTU and out-of-order delivery.
It requires an L2 that provides a feedback path from the reassembler to the fragmenter.
See Appendix <xref target="RFC8724" section="F" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8724#appendix-F" derivedContent="RFC8724"/> for a discussion on using ACK-on-Error mode on quasi-bidirectional links.</t>
          <t indent="0" pn="section-3.2.1-2">In ACK-on-Error mode, windows are used.</t>
          <t indent="0" pn="section-3.2.1-3">All tiles except the last one and the penultimate one <bcp14>MUST</bcp14> be of equal size, hereafter called "regular".
The size of the last tile <bcp14>MUST</bcp14> be smaller than or equal to the regular tile size.
Regarding the penultimate tile, a Profile <bcp14>MUST</bcp14> pick one of the following two options:</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1-4">
            <li pn="section-3.2.1-4.1">The penultimate tile size <bcp14>MUST</bcp14> be the regular tile size, or</li>
            <li pn="section-3.2.1-4.2">the penultimate tile size <bcp14>MUST</bcp14> be either the regular tile size or the regular tile size minus one L2 Word.</li>
          </ul>
          <t indent="0" pn="section-3.2.1-5">A SCHC Fragment message carries one or several contiguous tiles, which may span multiple windows.
            A SCHC Compound ACK reports on the reception of one window of tiles or several windows of tiles, each one identified by its window number.
          </t>
          <t indent="0" pn="section-3.2.1-6">See <xref target="Fig-TilesACKonError" format="default" sectionFormat="of" derivedContent="Figure 6"/> (see <eref target="https://www.rfc-editor.org/rfc/rfc8724.html#figure-23" brackets="none">Figure 23 of RFC 8724</eref>) for an example.</t>
          <figure anchor="Fig-TilesACKonError" align="left" suppress-title="false" pn="figure-6">
            <name slugifiedName="name-schc-packet-fragmented-in-t">SCHC Packet Fragmented in Tiles, ACK-on-Error Mode (Figure 23 in RFC 8724)</name>
            <artwork name="" type="" align="left" alt="" pn="section-3.2.1-7.1">
        +---------------------------------------------...-----------+
        |                       SCHC Packet                         |
        +---------------------------------------------...-----------+

Tile#   | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 | 4 |     | 0 | 4 |3|
Window# |-------- 0 --------|-------- 1 --------|- 2  ... 27 -|- 28-|


SCHC Fragment msg   |-----------|
</artwork>
          </figure>
          <t indent="0" pn="section-3.2.1-8">The W field is wide enough that it unambiguously represents an absolute window number.
The fragment receiver sends SCHC Compound ACKs to the fragment sender about windows for which tiles are missing.
No SCHC Compound ACK is sent by the fragment receiver for windows that it knows have been fully received.</t>
          <t indent="0" pn="section-3.2.1-9">The fragment sender retransmits SCHC Fragments for tiles that are reported missing.
It can advance to next windows even before it has ascertained that all tiles belonging to previous windows have been correctly received,
and it can still later retransmit SCHC Fragments with tiles belonging to previous windows.
Therefore, the sender and the receiver may operate in a decoupled fashion.
The fragmented SCHC Packet transmission concludes when:</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1-10">
            <li pn="section-3.2.1-10.1">integrity checking shows that the fragmented SCHC Packet has been correctly reassembled at the receive end,
and this information has been conveyed back to the sender,</li>
            <li pn="section-3.2.1-10.2">too many retransmission attempts have been made, or</li>
            <li pn="section-3.2.1-10.3">the receiver determines that the transmission of this fragmented SCHC Packet has been inactive for too long.</li>
          </ul>
          <t indent="0" pn="section-3.2.1-11">Each Profile <bcp14>MUST</bcp14> specify which RuleID value(s) corresponds to SCHC F/R messages operating in this mode.</t>
          <t indent="0" pn="section-3.2.1-12">The W field <bcp14>MUST</bcp14> be present in the SCHC F/R messages.</t>
          <t indent="0" pn="section-3.2.1-13">Each Profile, for each RuleID value, <bcp14>MUST</bcp14> define:</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1-14">
            <li pn="section-3.2.1-14.1">the tile size (a tile does not need to be a duplicate of an L2 Word, but it <bcp14>MUST</bcp14> be at least the size of an L2 Word),</li>
            <li pn="section-3.2.1-14.2">the value of M,</li>
            <li pn="section-3.2.1-14.3">the value of N,</li>
            <li pn="section-3.2.1-14.4">the value of WINDOW_SIZE, which <bcp14>MUST</bcp14> be strictly less than 2<sup>N</sup>,</li>
            <li pn="section-3.2.1-14.5">the size and algorithm for the RCS field,</li>
            <li pn="section-3.2.1-14.6">the value of T,</li>
            <li pn="section-3.2.1-14.7">the value of MAX_ACK_REQUESTS,</li>
            <li pn="section-3.2.1-14.8">the expiration time of the Retransmission Timer,</li>
            <li pn="section-3.2.1-14.9">the expiration time of the Inactivity Timer,</li>
            <li pn="section-3.2.1-14.10">if the last tile is carried in a Regular SCHC Fragment or an All-1 SCHC Fragment (see <xref target="ACK-on-Error-sender" format="default" sectionFormat="of" derivedContent="Section 3.2.1.1"/> (Section <xref target="RFC8724" sectionFormat="bare" section="8.4.3.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8724#section-8.4.3.1" derivedContent="RFC8724"/> in <xref target="RFC8724" format="default" sectionFormat="of" derivedContent="RFC8724"/>),</li>
            <li pn="section-3.2.1-14.11">if the penultimate tile <bcp14>MAY</bcp14> be one L2 Word smaller than the regular tile size (in this case, the regular tile size <bcp14>MUST</bcp14> be at least twice the L2 Word size),</li>
            <li pn="section-3.2.1-14.12">usage or not of the SCHC Compound ACK message, and</li>
            <li pn="section-3.2.1-14.13">usage or not of the Compressed Bitmap format in the last window of the SCHC Compound ACK message.</li>
          </ul>
          <t indent="0" pn="section-3.2.1-15">For each active pair of RuleID and DTag values, the sender <bcp14>MUST</bcp14> maintain:</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1-16">
            <li pn="section-3.2.1-16.1">one Attempts counter and</li>
            <li pn="section-3.2.1-16.2">one Retransmission Timer.</li>
          </ul>
          <t indent="0" pn="section-3.2.1-17">For each active pair of RuleID and DTag values, the receiver <bcp14>MUST</bcp14> maintain:</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1-18">
            <li pn="section-3.2.1-18.1">one Attempts counter and</li>
            <li pn="section-3.2.1-18.2">one Inactivity Timer.</li>
          </ul>
          <section anchor="ACK-on-Error-sender" numbered="true" removeInRFC="false" toc="exclude" pn="section-3.2.1.1">
            <name slugifiedName="name-sender-behavior-replaces-se">Sender Behavior (Replaces Section 8.4.3.1, RFC 8724)</name>
            <t indent="0" pn="section-3.2.1.1-1">At the beginning of the fragmentation of a new SCHC Packet:</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.1-2">
              <li pn="section-3.2.1.1-2.1">the fragment sender <bcp14>MUST</bcp14> select a RuleID and DTag value pair for this SCHC Packet.
A Rule <bcp14>MUST NOT</bcp14> be selected if the values of M and WINDOW_SIZE for that Rule are such that the SCHC Packet cannot be fragmented in (2<sup>M</sup>) * WINDOW_SIZE tiles or less.</li>
              <li pn="section-3.2.1.1-2.2">the fragment sender <bcp14>MUST</bcp14> initialize the Attempts counter to 0 for that RuleID and DTag value pair.</li>
            </ul>
            <t indent="0" pn="section-3.2.1.1-3">A Regular SCHC Fragment message carries in its payload one or more tiles.
If more than one tile is carried in one Regular SCHC Fragment:</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.1-4">
              <li pn="section-3.2.1.1-4.1">the selected tiles <bcp14>MUST</bcp14> be contiguous in the original SCHC Packet, and</li>
              <li pn="section-3.2.1.1-4.2">they <bcp14>MUST</bcp14> be placed in the SCHC Fragment Payload adjacent to one another, in the order they appear in the SCHC Packet, from the start of the SCHC Packet toward its end.</li>
            </ul>
            <t indent="0" pn="section-3.2.1.1-5">Tiles that are not the last one <bcp14>MUST</bcp14> be sent in Regular SCHC Fragments as specified in Section <xref target="RFC8724" section="8.3.1.1" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8724#section-8.3.1.1" derivedContent="RFC8724"/>.
The FCN field <bcp14>MUST</bcp14> contain the tile index of the first tile sent in that SCHC Fragment.</t>
            <t indent="0" pn="section-3.2.1.1-6">In a Regular SCHC Fragment message, the sender <bcp14>MUST</bcp14> fill the W field with the window number of the first tile sent in that SCHC Fragment.</t>
            <t indent="0" pn="section-3.2.1.1-7">A Profile <bcp14>MUST</bcp14> define if the last tile of a SCHC Packet is sent:</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.1-8">
              <li pn="section-3.2.1.1-8.1">in a Regular SCHC Fragment, alone or as part of a multi-tiles Payload,</li>
              <li pn="section-3.2.1.1-8.2">alone in an All-1 SCHC Fragment, or</li>
              <li pn="section-3.2.1.1-8.3">with either one of the above two methods.</li>
            </ul>
            <t indent="0" pn="section-3.2.1.1-9">In an All-1 SCHC Fragment message, the sender <bcp14>MUST</bcp14> fill the W field with the window number of the last tile of the SCHC Packet.</t>
            <t indent="0" pn="section-3.2.1.1-10">The fragment sender <bcp14>MUST</bcp14> send SCHC Fragments such that, all together, they contain all the tiles of the fragmented SCHC Packet.</t>
            <t indent="0" pn="section-3.2.1.1-11">The fragment sender <bcp14>MUST</bcp14> send at least one All-1 SCHC Fragment.</t>
            <t indent="0" pn="section-3.2.1.1-12">In doing the two items above, the sender <bcp14>MUST</bcp14> ascertain that the receiver will not receive the last tile through both a Regular SCHC Fragment and an All-1 SCHC Fragment.</t>
            <t indent="0" pn="section-3.2.1.1-13">The fragment sender <bcp14>MUST</bcp14> listen for SCHC Compound ACK messages after having sent:</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.1-14">
              <li pn="section-3.2.1.1-14.1">an All-1 SCHC Fragment or</li>
              <li pn="section-3.2.1.1-14.2">a SCHC ACK REQ.</li>
            </ul>
            <t indent="0" pn="section-3.2.1.1-15">A Profile <bcp14>MAY</bcp14> specify other times at which the fragment sender <bcp14>MUST</bcp14> listen for SCHC Compound ACK messages.
For example, this could be after sending a complete window of tiles.</t>
            <t indent="0" pn="section-3.2.1.1-16">Each time a fragment sender sends an All-1 SCHC Fragment or a SCHC ACK REQ:</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.1-17">
              <li pn="section-3.2.1.1-17.1">it <bcp14>MUST</bcp14> increment the Attempts counter, and</li>
              <li pn="section-3.2.1.1-17.2">it <bcp14>MUST</bcp14> reset the Retransmission Timer.</li>
            </ul>
            <t indent="0" pn="section-3.2.1.1-18">On Retransmission Timer expiration:</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.1-19">
              <li pn="section-3.2.1.1-19.1">if the Attempts counter is strictly less than MAX_ACK_REQUESTS,
the fragment sender <bcp14>MUST</bcp14> send
either the All-1 SCHC Fragment or
a SCHC ACK REQ with the W field corresponding to the last window,</li>
              <li pn="section-3.2.1.1-19.2">otherwise, the fragment sender <bcp14>MUST</bcp14> send a SCHC Sender-Abort, and
it <bcp14>MAY</bcp14> exit with an error condition.</li>
            </ul>
            <t indent="0" pn="section-3.2.1.1-20">All message receptions being discussed in the rest of this section are to be understood as
"matching the RuleID and DTag pair being processed", even if not spelled out, for brevity.</t>
            <t indent="0" pn="section-3.2.1.1-21">On receiving a SCHC Compound ACK:</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.1-22">
              <li pn="section-3.2.1.1-22.1">
                <t indent="0" pn="section-3.2.1.1-22.1.1">if one of the W fields in the SCHC Compound ACK corresponds to the last window of the SCHC Packet:</t>
                <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.1-22.1.2">
                  <li pn="section-3.2.1.1-22.1.2.1">if the C bit is set, the sender <bcp14>MAY</bcp14> exit successfully.</li>
                  <li pn="section-3.2.1.1-22.1.2.2">
                    <t indent="0" pn="section-3.2.1.1-22.1.2.2.1">otherwise:      </t>
                    <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.1-22.1.2.2.2">
                      <li pn="section-3.2.1.1-22.1.2.2.2.1">
                        <t indent="0" pn="section-3.2.1.1-22.1.2.2.2.1.1">if the Profile mandates that the last tile be sent in an All-1 SCHC Fragment:</t>
                        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.1-22.1.2.2.2.1.2">
                          <li pn="section-3.2.1.1-22.1.2.2.2.1.2.1">
                            <t indent="0" pn="section-3.2.1.1-22.1.2.2.2.1.2.1.1">if the SCHC Compound ACK shows no missing tile at the receiver, the sender:</t>
                            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.1-22.1.2.2.2.1.2.1.2">
                              <li pn="section-3.2.1.1-22.1.2.2.2.1.2.1.2.1">
                                <bcp14>MUST</bcp14> send a SCHC Sender-Abort and</li>
                              <li pn="section-3.2.1.1-22.1.2.2.2.1.2.1.2.2">
                                <bcp14>MAY</bcp14> exit with an error condition.</li>
                            </ul>
                          </li>
                          <li pn="section-3.2.1.1-22.1.2.2.2.1.2.2">
                            <t indent="0" pn="section-3.2.1.1-22.1.2.2.2.1.2.2.1">otherwise:</t>
                            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.1-22.1.2.2.2.1.2.2.2">
                              <li pn="section-3.2.1.1-22.1.2.2.2.1.2.2.2.1">the fragment sender <bcp14>MUST</bcp14> send SCHC Fragment messages containing all the tiles of all the windows that are reported missing in the SCHC Compound ACK.</li>
                              <li pn="section-3.2.1.1-22.1.2.2.2.1.2.2.2.2">if the last of these SCHC Fragment messages is not an All-1 SCHC Fragment, then the fragment sender <bcp14>MAY</bcp14> either send, in addition, a SCHC ACK REQ with the W field corresponding to the last window or repeat the All-1 SCHC Fragment to ask the receiver to confirm that all tiles have been correctly received.
</li>
                              <li pn="section-3.2.1.1-22.1.2.2.2.1.2.2.2.3">in doing the two items above, the sender <bcp14>MUST</bcp14> ascertain that the receiver will not receive the last tile through both a Regular SCHC Fragment and an All-1 SCHC Fragment.</li>
                            </ul>
                          </li>
                        </ul>
                      </li>
                      <li pn="section-3.2.1.1-22.1.2.2.2.2">
                        <t indent="0" pn="section-3.2.1.1-22.1.2.2.2.2.1">otherwise:</t>
                        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.1-22.1.2.2.2.2.2">
                          <li pn="section-3.2.1.1-22.1.2.2.2.2.2.1">if the SCHC Compound ACK shows no missing tile at the receiver, the sender
<bcp14>MUST</bcp14> send the All-1 SCHC Fragment</li>
                          <li pn="section-3.2.1.1-22.1.2.2.2.2.2.2">
                            <t indent="0" pn="section-3.2.1.1-22.1.2.2.2.2.2.2.1">otherwise:</t>
                            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.1-22.1.2.2.2.2.2.2.2">
                              <li pn="section-3.2.1.1-22.1.2.2.2.2.2.2.2.1">the fragment sender <bcp14>MUST</bcp14> send SCHC Fragment messages containing all the tiles that are reported missing in the SCHC Compound ACK.</li>
                              <li pn="section-3.2.1.1-22.1.2.2.2.2.2.2.2.2">the fragment sender <bcp14>MUST</bcp14> then send
either the All-1 SCHC Fragment or
a SCHC ACK REQ with the W field corresponding to the last window.</li>
                            </ul>
                          </li>
                        </ul>
                      </li>
                    </ul>
                  </li>
                </ul>
              </li>
              <li pn="section-3.2.1.1-22.2">
                <t indent="0" pn="section-3.2.1.1-22.2.1">otherwise, the fragment sender:</t>
                <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.1-22.2.2">
                  <li pn="section-3.2.1.1-22.2.2.1">
                    <bcp14>MUST</bcp14> send SCHC Fragment messages containing the tiles that are reported missing in the SCHC Compound ACK.</li>
                  <li pn="section-3.2.1.1-22.2.2.2">then, it <bcp14>MAY</bcp14> send a SCHC ACK REQ with the W field corresponding to the last window.</li>
                </ul>
              </li>
            </ul>
            <t indent="0" pn="section-3.2.1.1-23">See <eref target="https://www.rfc-editor.org/rfc/rfc8724.html#figure-43" brackets="none">Figure 43</eref> for one among several possible examples of a Finite State Machine implementing a sender behavior obeying this specification.</t>
          </section>
          <section anchor="ACK-on-Error-receiver" numbered="true" removeInRFC="false" toc="exclude" pn="section-3.2.1.2">
            <name slugifiedName="name-receiver-behavior-replaces-">Receiver Behavior (Replaces Section 8.4.3.2, RFC 8724)</name>
            <t indent="0" pn="section-3.2.1.2-1">On receiving a SCHC Fragment with a RuleID and DTag pair not being processed at that time:</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.2-2">
              <li pn="section-3.2.1.2-2.1">the receiver <bcp14>SHOULD</bcp14> check that the DTag value has not recently been used for that RuleID value,
thereby ensuring that the received SCHC Fragment is not a remnant of a prior fragmented SCHC Packet transmission.
The initial value of the Inactivity Timer is the <bcp14>RECOMMENDED</bcp14> lifetime for the DTag value at the receiver.
If the SCHC Fragment is determined to be such a remnant, the receiver <bcp14>MAY</bcp14> silently ignore it and discard it.</li>
              <li pn="section-3.2.1.2-2.2">the receiver <bcp14>MUST</bcp14> start a process to assemble a new SCHC Packet with that RuleID and DTag value pair.
The receiver <bcp14>MUST</bcp14> start an Inactivity Timer for that RuleID and DTag value pair.
It <bcp14>MUST</bcp14> initialize an Attempts counter to 0 for that RuleID and DTag value pair.
If the receiver is under-resourced to do this, it <bcp14>MUST</bcp14> respond to the sender with a SCHC Receiver-Abort.</li>
            </ul>
            <t indent="0" pn="section-3.2.1.2-3">On reception of any SCHC F/R message for the RuleID and DTag pair being processed, the receiver <bcp14>MUST</bcp14> reset the Inactivity Timer pertaining to that RuleID and DTag pair.</t>
            <t indent="0" pn="section-3.2.1.2-4">All message receptions being discussed in the rest of this section are to be understood as
"matching the RuleID and DTag pair being processed", even if not spelled out, for brevity.</t>
            <t indent="0" pn="section-3.2.1.2-5">On receiving a SCHC Fragment message,
the receiver determines what tiles were received, based on the payload length and on the W and FCN fields of the SCHC Fragment.</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.2-6">
              <li pn="section-3.2.1.2-6.1">if the FCN is All-1 and if a Payload is present, the full SCHC Fragment Payload <bcp14>MUST</bcp14> be assembled including the padding bits.
This is because the size of the last tile is not known by the receiver;
therefore, padding bits are indistinguishable from the tile data bits, at this stage.
They will be removed by the SCHC C/D sublayer.
If the size of the SCHC Fragment Payload exceeds or equals
the size of one regular tile plus the size of an L2 Word, this <bcp14>SHOULD</bcp14> raise an error flag.</li>
              <li pn="section-3.2.1.2-6.2">
                <t indent="0" pn="section-3.2.1.2-6.2.1">otherwise, tiles <bcp14>MUST</bcp14> be assembled based on the a priori known tile size.
                </t>
                <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.2-6.2.2">
                  <li pn="section-3.2.1.2-6.2.2.1">If allowed by the Profile, the end of the payload <bcp14>MAY</bcp14> contain the last tile, which may be shorter. Padding bits are indistinguishable from the tile data bits, at this stage.</li>
                  <li pn="section-3.2.1.2-6.2.2.2">The payload may contain the penultimate tile that, if allowed by the Profile, <bcp14>MAY</bcp14> be exactly one L2 Word shorter than the regular tile size.</li>
                  <li pn="section-3.2.1.2-6.2.2.3">
                    <t indent="0" pn="section-3.2.1.2-6.2.2.3.1">Otherwise, padding bits <bcp14>MUST</bcp14> be discarded.
This is possible because:</t>
                    <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.2-6.2.2.3.2">
                      <li pn="section-3.2.1.2-6.2.2.3.2.1">the size of the tiles is known a priori,</li>
                      <li pn="section-3.2.1.2-6.2.2.3.2.2">tiles are larger than an L2 Word, and</li>
                      <li pn="section-3.2.1.2-6.2.2.3.2.3">padding bits are always strictly less than an L2 Word.</li>
                    </ul>
                  </li>
                </ul>
              </li>
            </ul>
            <t indent="0" pn="section-3.2.1.2-7">On receiving a SCHC All-0 SCHC Fragment:</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.2-8">
              <li pn="section-3.2.1.2-8.1">if the receiver knows of any windows with missing tiles for the packet being reassembled (and depending on certain parameters, like network conditions, sender buffer/cache size, and supported application delay, among others), it <bcp14>MAY</bcp14> return a SCHC Compound ACK for the missing tiles, starting from the lowest-numbered window.
                  </li>
            </ul>
            <t indent="0" pn="section-3.2.1.2-9">On receiving a SCHC ACK REQ or an All-1 SCHC Fragment:</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.2-10">
              <li pn="section-3.2.1.2-10.1">if the receiver knows of any windows with missing tiles for the packet being reassembled, it
<bcp14>MUST</bcp14> return a SCHC Compound ACK for the missing tiles, starting from the lowest-numbered window.</li>
              <li pn="section-3.2.1.2-10.2">
                <t indent="0" pn="section-3.2.1.2-10.2.1">otherwise:
                </t>
                <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.2-10.2.2">
                  <li pn="section-3.2.1.2-10.2.2.1">if it has received at least one tile, it <bcp14>MUST</bcp14> return a SCHC Compound ACK for the highest-numbered window it currently has tiles for,</li>
                  <li pn="section-3.2.1.2-10.2.2.2">otherwise, it <bcp14>MUST</bcp14> return a SCHC Compound ACK for window number 0.</li>
                </ul>
              </li>
            </ul>
            <t indent="0" pn="section-3.2.1.2-11">A Profile <bcp14>MAY</bcp14> specify other times and circumstances at which
a receiver sends a SCHC Compound ACK
and which window the SCHC Compound ACK reports about in these circumstances.</t>
            <t indent="0" pn="section-3.2.1.2-12">Upon sending a SCHC Compound ACK, the receiver <bcp14>MUST</bcp14> increase the Attempts counter.</t>
            <t indent="0" pn="section-3.2.1.2-13">After receiving an All-1 SCHC Fragment,
a receiver <bcp14>MUST</bcp14> check the integrity of the reassembled SCHC Packet at least every time
it prepares to send a SCHC Compound ACK for the last window.</t>
            <t indent="0" pn="section-3.2.1.2-14">Upon receiving a SCHC Sender-Abort,
the receiver <bcp14>MAY</bcp14> exit with an error condition.</t>
            <t indent="0" pn="section-3.2.1.2-15">Upon expiration of the Inactivity Timer,
the receiver <bcp14>MUST</bcp14> send a SCHC Receiver-Abort,
and it <bcp14>MAY</bcp14> exit with an error condition.</t>
            <t indent="0" pn="section-3.2.1.2-16">On the Attempts counter exceeding MAX_ACK_REQUESTS,
the receiver <bcp14>MUST</bcp14> send a SCHC Receiver-Abort,
and it <bcp14>MAY</bcp14> exit with an error condition.</t>
            <t indent="0" pn="section-3.2.1.2-17">Reassembly of the SCHC Packet concludes when:</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.1.2-18">
              <li pn="section-3.2.1.2-18.1">a Sender-Abort has been received,</li>
              <li pn="section-3.2.1.2-18.2">the Inactivity Timer has expired,</li>
              <li pn="section-3.2.1.2-18.3">the Attempts counter has exceeded MAX_ACK_REQUESTS, or</li>
              <li pn="section-3.2.1.2-18.4">at least an All-1 SCHC Fragment has been received and integrity checking of the reassembled SCHC Packet is successful.</li>
            </ul>
            <t indent="0" pn="section-3.2.1.2-19">See <eref target="https://www.rfc-editor.org/rfc/rfc8724.html#figure-44" brackets="none">Figure 44</eref> for one among several possible examples of a Finite State Machine implementing a receiver behavior obeying this specification. The example provided is meant to match the sender Finite State Machine of <eref target="https://www.rfc-editor.org/rfc/rfc8724.html#figure-43" brackets="none">Figure 43</eref>.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="schc-compound-ack-examples" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-schc-compound-ack-example">SCHC Compound ACK Example</name>
      <t indent="0" pn="section-4-1"><xref target="compound-ack-ex-ex" format="default" sectionFormat="of" derivedContent="Figure 7"/> shows an example transmission of a SCHC Packet in ACK-on-Error mode using the SCHC Compound ACK.
In the example, the SCHC Packet is fragmented in 14 tiles, with N=3, WINDOW_SIZE=7, M=2, and two lost SCHC fragments.
Only 1 SCHC Compound ACK is generated.</t>
      <figure anchor="compound-ack-ex-ex" align="left" suppress-title="false" pn="figure-7">
        <name slugifiedName="name-schc-compound-ack-message-s">SCHC Compound ACK Message Sequence Example</name>
        <artwork name="" type="" align="left" alt="" pn="section-4-2.1">
        Sender                Receiver
          |-----W=0, FCN=6 -----&gt;|
          |-----W=0, FCN=5 -----&gt;|
          |-----W=0, FCN=4 -----&gt;|
          |-----W=0, FCN=3 -----&gt;|
          |-----W=0, FCN=2 --X   |
          |-----W=0, FCN=1 -----&gt;|
          |-----W=0, FCN=0 -----&gt;| Bitmap: 1111011
      (no ACK)
          |-----W=1, FCN=6 -----&gt;|
          |-----W=1, FCN=5 -----&gt;|
          |-----W=1, FCN=4 -----&gt;|
          |-----W=1, FCN=3 -----&gt;|
          |-----W=1, FCN=2 -----&gt;|
          |-----W=1, FCN=1 --X   |
          |-- W=1, FCN=7 + RCS -&gt;| Integrity check: failure
          |&lt;--- Compound ACK ----| [C=0, W=0 - Bitmap:1111011, 
          |-----W=0, FCN=2 -----&gt;|        W=1 - Bitmap:1111101]
          |-----W=1, FCN=1 -----&gt;| Integrity check: success
          |&lt;--- ACK, W=1, C=1 ---| C=1
        (End)
</artwork>
      </figure>
      <figure anchor="compound-ack-fmt-ex" align="left" suppress-title="false" pn="figure-8">
        <name slugifiedName="name-schc-compound-ack-message-format">SCHC Compound ACK Message Format Example: Losses are Found in Windows 00 and 01</name>
        <artwork name="" type="" align="left" alt="" pn="section-4-3.1">
 |--- SCHC ACK Header --|- W=00 --|----- W=01 -----|
        |--T-|---M--|-1-|         |---M--|         |---M--|
 +------+----+------+---+---------+------+---------+------+-----+
 |RuleID|DTag| W=00 |C=0| 1111011 | W=01 | 1111101 |  00  | pad |
 +------+----+------+---+---------+------+---------+------+-----+
                         next L2 Word boundary -&gt;|&lt;-- L2 Word -&gt;|
</artwork>
      </figure>
    </section>
    <section anchor="schc-compound-ack-yang-model" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-schc-compound-ack-yang-data">SCHC Compound ACK YANG Data Model</name>
      <t indent="0" pn="section-5-1">This document also extends the SCHC YANG data model defined in <xref target="RFC9363" format="default" sectionFormat="of" derivedContent="RFC9363"/> by including
a new leaf in the Ack-on-Error fragmentation mode to describe both the option to use the SCHC Compound ACK, as well as its bitmap format. </t>
      <section anchor="yang-model" numbered="true" removeInRFC="false" toc="include" pn="section-5.1">
        <name slugifiedName="name-schc-yang-data-model-extens">SCHC YANG Data Model Extension</name>
        <figure anchor="schc-data-model" align="left" suppress-title="false" pn="figure-9">
          <name slugifiedName="name-schc-yang-data-model-compou">SCHC YANG Data Model - Compound ACK Extension</name>
          <sourcecode markers="true" name="ietf-schc-compound-ack@2023-07-26.yang" type="yang" pn="section-5.1-1.1">
module ietf-schc-compound-ack {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-schc-compound-ack";
  prefix schc-compound-ack;

  import ietf-schc {
    prefix schc;
  }

  organization
    "IETF IPv6 over Low Power Wide-Area Networks (lpwan)
     Working Group";
  contact
    "WG Web:   &lt;https://datatracker.ietf.org/wg/lpwan/about/&gt;
     WG List:  &lt;mailto:lp-wan@ietf.org&gt;
     Editor:   Laurent Toutain
       &lt;mailto:laurent.toutain@imt-atlantique.fr&gt;
     Editor:   Juan Carlos Zuniga
       &lt;mailto:j.c.zuniga@ieee.org&gt;
     Editor:   Sergio Aguilar
       &lt;mailto:sergio.aguilar.romero@upc.edu&gt;";
  description
    "Copyright (c) 2023 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 Revised 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 9363
     (https://www.rfc-editor.org/info/rfc9363); see the RFC itself
     for full legal notices.
     ***************************************************************
     Generic data model for the Static Context Header Compression
     Rule for SCHC, based on RFCs 8724 and 8824.  Including
     compression, no-compression, and fragmentation Rules.";

  revision 2023-07-26 {
    description
      "Initial version for RFC 9441.";
    reference
      "RFC 9441 Static Context Header Compression (SCHC) Compound
                Acknowledgement (ACK)";
  }

  identity bitmap-format-base-type {
    description
      "Define how the bitmap is formed in ACK messages.";
  }

  identity bitmap-RFC8724 {
    base bitmap-format-base-type;
    description
      "Bitmap by default as defined in RFC 8724.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  identity bitmap-compound-ack {
    base bitmap-format-base-type;
    description
      "Compound ACK allows several bitmaps in an ACK message.";
  }

  typedef bitmap-format-type {
    type identityref {
      base bitmap-format-base-type;
    }
    description
      "Type of bitmap used in Rules.";
  }

  augment "/schc:schc/schc:rule/schc:nature/"
        + "schc:fragmentation/schc:mode/schc:ack-on-error" {
    leaf bitmap-format {
      when "derived-from-or-self(../schc:fragmentation-mode,
                        'schc:fragmentation-mode-ack-on-error')";
      type schc-compound-ack:bitmap-format-type;
      default "schc-compound-ack:bitmap-RFC8724";
      description
        "How the bitmaps are included in the SCHC ACK message.";
    }
    leaf last-bitmap-compression {
      when "derived-from-or-self(../schc:fragmentation-mode,
                        'schc:fragmentation-mode-ack-on-error')";
      type boolean;
      default "true";
      description
        "When true, the ultimate bitmap in the SCHC ACK message
         can be compressed.  Default behavior from RFC 8724.";
      reference
        "RFC 8724 SCHC: Generic Framework for Static Context Header
                  Compression and Fragmentation";
    }
    description
      "Augment the SCHC Rules to manage Compound ACK.";
  }
}
</sourcecode>
        </figure>
      </section>
      <section anchor="yang-tree" numbered="true" removeInRFC="false" toc="include" pn="section-5.2">
        <name slugifiedName="name-schc-yang-tree-extension">SCHC YANG Tree Extension</name>
        <figure anchor="schc-data-tree" align="left" suppress-title="false" pn="figure-10">
          <name slugifiedName="name-tree-diagram-compound-ack-e">Tree Diagram - Compound ACK Extension</name>
          <sourcecode type="yangtree" markers="false" pn="section-5.2-1.1">
module: ietf-schc-compound-ack
  augment /schc:schc/schc:rule/schc:nature/schc:fragmentation/
        schc:mode/schc:ack-on-error:
    +--rw bitmap-format?        schc-compound-ack:bitmap-format-type
    +--rw last-bitmap-compression?   boolean
</sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="schc-compound-ack-parameters" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-schc-compound-ack-parameter">SCHC Compound ACK Parameters</name>
      <t indent="0" pn="section-6-1">This section lists the parameters related to the SCHC Compound ACK usage that need to be defined in the Profile.
    This list <bcp14>MUST</bcp14> be appended to the list of SCHC parameters under "Decision to use SCHC fragmentation mechanism or not. If yes, the document must describe:" as defined in Appendix <xref target="RFC8724" sectionFormat="bare" section="D" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8724#appendix-D" derivedContent="RFC8724"/> of <xref target="RFC8724" format="default" sectionFormat="of" derivedContent="RFC8724"/>.
</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6-2">
        <li pn="section-6-2.1">whether the SCHC Compound ACK message is used or not, and</li>
        <li pn="section-6-2.2">whether the compressed bitmap format in the last window of the SCHC Compound ACK message is used or not.</li>
      </ul>
    </section>
    <section anchor="security-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-7-1">This document specifies a message format extension for SCHC.
    Hence, the same security considerations defined in <xref target="RFC8724" format="default" sectionFormat="of" derivedContent="RFC8724"/>
      and <xref target="RFC9363" format="default" sectionFormat="of" derivedContent="RFC9363"/> apply.</t>
      <t indent="0" pn="section-7-2">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" format="default" sectionFormat="of" derivedContent="RFC6241"/> or RESTCONF <xref target="RFC8040" format="default" sectionFormat="of" derivedContent="RFC8040"/>. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) <xref target="RFC6242" format="default" sectionFormat="of" derivedContent="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC8446"/>.</t>
      <t indent="0" pn="section-7-3">The Network Configuration Access Control Model (NACM) <xref target="RFC8341" format="default" sectionFormat="of" derivedContent="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 indent="0" pn="section-7-4">There are a number of data nodes defined in this YANG module that are
   writable/creatable/deletable (i.e., config true, which is the
   default).  These data nodes may be considered sensitive or vulnerable
   in some network environments.  Write operations (e.g., edit-config)
   to these data nodes without proper protection can have a negative
   effect on network operations.  These are the subtrees and data nodes
      and their sensitivity/vulnerability:</t>
      <dl newline="true" spacing="normal" indent="3" pn="section-7-5">
        <dt pn="section-7-5.1">/schc:schc/schc:rule/schc:nature/schc:fragmentation/schc:mode/schc:ack-on-error:</dt>
        <dd pn="section-7-5.2">All the data nodes may be modified. The Rule contains sensitive information, such
    as the SCHC F/R mode configuration and usage and SCHC Compound ACK configuration.
    An attacker may try to modify other devices' Rules by changing the F/R mode or the
    usage of the SCHC Compound ACK and may block communication or create extra ACKs.
     Therefore, a device must be allowed to modify only
      its own Rules on the remote SCHC instance.  The identity of the
      requester must be validated.  This can be done through
  certificates or access lists.</dd>
      </dl>
      <t indent="0" pn="section-7-6">Some of the readable data nodes in this YANG module may be considered
   sensitive or vulnerable in some network environments.  It is thus
   important to control read access (e.g., via get, get-config, or
   notification) to these data nodes.  These are the subtrees and data
   nodes and their sensitivity/vulnerability:</t>
      <dl newline="true" spacing="normal" indent="3" pn="section-7-7">
        <dt pn="section-7-7.1">/schc:schc/schc:rule/schc:nature/schc:fragmentation/schc:mode/schc:ack-on-error:</dt>
        <dd pn="section-7-7.2">By reading this module, an attacker may learn the F/R mode used by the device,
    how the device manages the bitmap creation, the buffer sizes, and when the device will request an ACK.</dd>
      </dl>
    </section>
    <section anchor="ianaconsiderations" numbered="true" removeInRFC="false" toc="include" pn="section-8">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-8-1"> This document registers one URI and one YANG data model.</t>
      <section anchor="uri_registration" numbered="true" removeInRFC="false" toc="include" pn="section-8.1">
        <name slugifiedName="name-uri-registration">URI Registration</name>
        <t indent="0" pn="section-8.1-1">
       IANA registered the following URI in the "IETF XML Registry"
        <xref target="RFC3688" format="default" sectionFormat="of" derivedContent="RFC3688"/>:
        </t>
        <dl newline="false" indent="3" spacing="normal" pn="section-8.1-2">
          <dt pn="section-8.1-2.1">URI:</dt>
          <dd pn="section-8.1-2.2">urn:ietf:params:xml:ns:yang:ietf-schc-compound-ack</dd>
          <dt pn="section-8.1-2.3">Registrant Contact:</dt>
          <dd pn="section-8.1-2.4">The IESG.</dd>
          <dt pn="section-8.1-2.5">XML:</dt>
          <dd pn="section-8.1-2.6">N/A; the requested URI is an XML namespace.</dd>
        </dl>
      </section>
      <section anchor="module_name_registration" numbered="true" removeInRFC="false" toc="include" pn="section-8.2">
        <name slugifiedName="name-yang-module-name-registrati">YANG Module Name Registration</name>
        <t indent="0" pn="section-8.2-1"> IANA has registered the following YANG data model in the "YANG Module
   Names" registry <xref target="RFC6020" format="default" sectionFormat="of" derivedContent="RFC6020"/>.</t>
        <dl newline="false" indent="3" spacing="normal" pn="section-8.2-2">
          <dt pn="section-8.2-2.1">name:</dt>
          <dd pn="section-8.2-2.2">ietf-schc-compound-ack</dd>
          <dt pn="section-8.2-2.3">namespace:</dt>
          <dd pn="section-8.2-2.4">urn:ietf:params:xml:ns:yang:ietf-schc-compound-ack</dd>
          <dt pn="section-8.2-2.5">prefix:</dt>
          <dd pn="section-8.2-2.6">schc-compound-ack</dd>
          <dt pn="section-8.2-2.7">reference:</dt>
          <dd pn="section-8.2-2.8">RFC 9441</dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references pn="section-9">
      <name slugifiedName="name-references">References</name>
      <references pn="section-9.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">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" quoteTitle="true" derivedAnchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t indent="0">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" quoteTitle="true" derivedAnchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t indent="0">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="RFC6241" target="https://www.rfc-editor.org/info/rfc6241" quoteTitle="true" derivedAnchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t indent="0">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="RFC6242" target="https://www.rfc-editor.org/info/rfc6242" quoteTitle="true" derivedAnchor="RFC6242">
          <front>
            <title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
            <author fullname="M. Wasserman" initials="M." surname="Wasserman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t indent="0">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="RFC8040" target="https://www.rfc-editor.org/info/rfc8040" quoteTitle="true" derivedAnchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t indent="0">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="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">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="RFC8341" target="https://www.rfc-editor.org/info/rfc8341" quoteTitle="true" derivedAnchor="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t indent="0">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 indent="0">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>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" quoteTitle="true" derivedAnchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t indent="0">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 indent="0">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="RFC8724" target="https://www.rfc-editor.org/info/rfc8724" quoteTitle="true" derivedAnchor="RFC8724">
          <front>
            <title>SCHC: Generic Framework for Static Context Header Compression and Fragmentation</title>
            <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <author fullname="C. Gomez" initials="C." surname="Gomez"/>
            <author fullname="D. Barthel" initials="D." surname="Barthel"/>
            <author fullname="JC. Zuniga" initials="JC." surname="Zuniga"/>
            <date month="April" year="2020"/>
            <abstract>
              <t indent="0">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 indent="0">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 indent="0">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 indent="0">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="RFC9363" target="https://www.rfc-editor.org/info/rfc9363" quoteTitle="true" derivedAnchor="RFC9363">
          <front>
            <title>A YANG Data Model for Static Context Header Compression (SCHC)</title>
            <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <date month="March" year="2023"/>
            <abstract>
              <t indent="0">This document describes a YANG data model for the Static Context Header Compression (SCHC) compression and fragmentation Rules.</t>
              <t indent="0">This document formalizes the description of the Rules for better interoperability between SCHC instances either to exchange a set of Rules or to modify the parameters of some Rules.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9363"/>
          <seriesInfo name="DOI" value="10.17487/RFC9363"/>
        </reference>
      </references>
      <references pn="section-9.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC8376" target="https://www.rfc-editor.org/info/rfc8376" quoteTitle="true" derivedAnchor="RFC8376">
          <front>
            <title>Low-Power Wide Area Network (LPWAN) Overview</title>
            <author fullname="S. Farrell" initials="S." role="editor" surname="Farrell"/>
            <date month="May" year="2018"/>
            <abstract>
              <t indent="0">Low-Power Wide Area Networks (LPWANs) are wireless technologies with characteristics such as large coverage areas, low bandwidth, possibly very small packet and application-layer data sizes, and long battery life operation. This memo is an informational overview of the set of LPWAN technologies being considered in the IETF and of the gaps that exist between the needs of those technologies and the goal of running IP in LPWANs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8376"/>
          <seriesInfo name="DOI" value="10.17487/RFC8376"/>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgements" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1"><contact fullname="Carles Gomez"/> has been funded in part by the Spanish Government
   through the TEC2016-79988-P grant and the PID2019-106808RA-I00 grant
   (funded by MCIN / AEI / 10.13039/501100011033) and by Secretaria
   d'Universitats i Recerca del Departament d'Empresa i Coneixement de
   la Generalitat de Catalunya through 2017 grant SGR 376 and 2021 grant SGR 00330.</t>
      <t indent="0" pn="section-appendix.a-2"><contact fullname="Sergio Aguilar"/> has been funded by the ERDF and the Spanish Government through project TEC2016-79988-P and project PID2019-106808RA-I00,
AEI/FEDER, EU (funded by MCIN / AEI / 10.13039/501100011033).</t>
      <t indent="0" pn="section-appendix.a-3"><contact fullname="Sandra Cespedes"/> has been funded in part by the ANID Chile Project FONDECYT Regular 1201893 and Basal Project FB0008.</t>
      <t indent="0" pn="section-appendix.a-4"><contact fullname="Diego Wistuba"/> has been funded by the ANID Chile Project FONDECYT Regular 1201893.</t>
      <t indent="0" pn="section-appendix.a-5">The authors would like to thank <contact fullname="Rafael Vidal"/>, <contact fullname="Julien Boite"/>, <contact fullname="Renaud Marty"/>, <contact fullname="Antonis Platis"/>, <contact fullname="Dominique Barthel"/>, and <contact fullname="Pascal Thubert"/> for their
very useful comments, reviews, and implementation design considerations.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Juan Carlos Zúñiga" initials="JC." surname="Zúñiga">
        <organization abbrev="Cisco" showOnFrontPage="true">Cisco</organization>
        <address>
          <postal>
            <street/>
            <city>Montreal</city>
            <code>QC</code>
            <country>Canada</country>
          </postal>
          <email>juzuniga@cisco.com</email>
        </address>
      </author>
      <author initials="C." surname="Gomez" fullname="Carles Gomez">
        <organization showOnFrontPage="true">Universitat Politècnica de Catalunya</organization>
        <address>
          <postal>
            <street>C/Esteve Terradas, 7</street>
            <street>08860 Castelldefels</street>
            <country>Spain</country>
          </postal>
          <email>carles.gomez@upc.edu</email>
        </address>
      </author>
      <author initials="S." surname="Aguilar" fullname="Sergio Aguilar">
        <organization showOnFrontPage="true">Universitat Politècnica de Catalunya</organization>
        <address>
          <postal>
            <street>C/Esteve Terradas, 7</street>
            <street>08860 Castelldefels</street>
            <country>Spain</country>
          </postal>
          <email>sergio.aguilar.romero@upc.edu</email>
        </address>
      </author>
      <author initials="L." surname="Toutain" fullname="Laurent Toutain">
        <organization showOnFrontPage="true">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>
      <author initials="S." surname="Céspedes" fullname="Sandra Céspedes">
        <organization showOnFrontPage="true">Concordia University</organization>
        <address>
          <postal>
            <street>1455 De Maisonneuve Blvd. W.</street>
            <city>Montreal QC, H3G 1M8</city>
            <country>Canada</country>
          </postal>
          <email>sandra.cespedes@concordia.ca</email>
        </address>
      </author>
      <author initials="D." surname="Wistuba" fullname="Diego Wistuba">
        <organization showOnFrontPage="true">NIC Labs, Universidad de Chile</organization>
        <address>
          <postal>
            <street>Av. Almte. Blanco Encalada 1975</street>
            <street>Santiago</street>
            <country>Chile</country>
          </postal>
          <email>research@witu.cl</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
