<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.2.3) -->
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-sirohi-schc-quic-compression-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="SCHC QUIC">QUIC compression using SCHC</title>
    <seriesInfo name="Internet-Draft" value="draft-sirohi-schc-quic-compression-00"/>
    <author initials="S." surname="Sirohi" fullname="Samar Sirohi">
      <organization>IMT Atlantique</organization>
      <address>
        <postal>
          <street>rue de la Chataigneraie</street>
          <city>35576 Cesson-Sevigne Cedex</city>
          <country>France</country>
        </postal>
        <email>samar.sirohi@imt-atlantique.net</email>
      </address>
    </author>
    <author initials="L." surname="Toutain" fullname="Laurent Toutain">
      <organization>IMT Atlantique</organization>
      <address>
        <postal>
          <street>rue de la Chataigneraie</street>
          <city>35576 Cesson-Sevigne Cedex</city>
          <country>France</country>
        </postal>
        <email>laurent.toutain@imt-atlantique.fr</email>
      </address>
    </author>
    <date year="2025" month="May" day="12"/>
    <area>Internet</area>
    <workgroup>SCHC Working Group</workgroup>
    <abstract>
      <?line 44?>

<t>This document specifies a mechanism for applying Static Context Header
Compression (SCHC) to QUIC (Quick UDP Internet Connections) packets.
It leverages SCHC to compress both the QUIC packet header and the
headers or type information of QUIC frames contained within the
packet payload. This approach aims to significantly reduce QUIC
overhead, optimizing bandwidth usage. This is particularly beneficial
for valuable in bandwidth-sensitive scenarios like deep space communications.</t>
      <t>This document defines the SCHC architecture.</t>
    </abstract>
  </front>
  <middle>
    <?line 56?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>QUIC <xref target="rfc9000"/> provides a secure, reliable, multiplexed transport
protocol over UDP. While efficient, its packet headers and frame
headers can still represent significant overhead relative to the payload,
especially when carrying small amounts of application data. This overhead
can be detrimental on bandwidth-sensitive links, such as those found in
deep space communication.</t>
      <t>SCHC <xref target="rfc8724"/> provides a powerful compression mechanism optimized
for environments where endpoints share static contexts describing the
expected traffic patterns, allowing for significant compression based on
predictability, similar in principle to statistical compression approaches.
This document proposes a method to apply SCHC compression in two stages
within the QUIC packet processing pipeline: first to individual QUIC
frames' headers/metadata, and second to the outer QUIC packet header itself.</t>
      <t>The goal is to minimize the transmission size of QUIC packets over
links where SCHC is deployed, potentially enabling more efficient QUIC
usage in deep space communication scenarios and other environments where bandwidth
is at a premium.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <ul spacing="normal">
        <li>
          <t><strong>SCHC:</strong> Static Context Header Compression <xref target="rfc8724"/>.</t>
        </li>
        <li>
          <t><strong>QUIC:</strong> Transport protocol as defined in <xref target="rfc9000"/>.</t>
        </li>
        <li>
          <t><strong>QUIC Frame:</strong> Units of data carried within QUIC packets (e.g., STREAM,
ACK, PING).</t>
        </li>
        <li>
          <t><strong>Compressed Frame (CF):</strong> The result of applying SCHC compression rules
to the header/type/metadata of a single QUIC Frame. The frame's
payload (if any) remains uncompressed at this stage.</t>
        </li>
        <li>
          <t><strong>Inner SCHC Packet:</strong> An aggregation of one or more Compressed Frames,
prefixed by a SCHC Rule ID and containing length information. This
forms the payload for QUIC encryption.</t>
        </li>
        <li>
          <t><strong>Outer QUIC Header:</strong> The standard QUIC packet header (short or long).</t>
        </li>
        <li>
          <t><strong>Compressed QUIC Header:</strong> The result of applying SCHC compression rules
to the Outer QUIC Header.</t>
        </li>
        <li>
          <t><strong>RID:</strong> SCHC Rule ID used for compression/decompression.</t>
        </li>
        <li>
          <t><strong>L:</strong> Length field associated with a Compressed Frame within the Inner
SCHC Packet.</t>
        </li>
      </ul>
    </section>
    <section anchor="architecture-overview">
      <name>Architecture Overview</name>
      <t>The proposed mechanism modifies the QUIC packet construction process
by introducing SCHC compression at two distinct stages. Fig. 1 
illustrates the overall flow.</t>
      <figure anchor="Fig-archi">
        <name>SCHC-QUIC Compression Architecture</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="768" width="584" viewBox="0 0 584 768" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 32,304 L 32,336" fill="none" stroke="black"/>
              <path d="M 32,416 L 32,464" fill="none" stroke="black"/>
              <path d="M 48,32 L 48,64" fill="none" stroke="black"/>
              <path d="M 48,160 L 48,208" fill="none" stroke="black"/>
              <path d="M 96,72 L 96,112" fill="none" stroke="black"/>
              <path d="M 112,656 L 112,704" fill="none" stroke="black"/>
              <path d="M 144,384 L 144,408" fill="none" stroke="black"/>
              <path d="M 144,472 L 144,560" fill="none" stroke="black"/>
              <path d="M 152,32 L 152,64" fill="none" stroke="black"/>
              <path d="M 152,160 L 152,208" fill="none" stroke="black"/>
              <path d="M 168,32 L 168,64" fill="none" stroke="black"/>
              <path d="M 168,160 L 168,208" fill="none" stroke="black"/>
              <path d="M 216,72 L 216,112" fill="none" stroke="black"/>
              <path d="M 272,32 L 272,64" fill="none" stroke="black"/>
              <path d="M 272,160 L 272,208" fill="none" stroke="black"/>
              <path d="M 272,416 L 272,464" fill="none" stroke="black"/>
              <path d="M 312,656 L 312,704" fill="none" stroke="black"/>
              <path d="M 344,416 L 344,464" fill="none" stroke="black"/>
              <path d="M 344,528 L 344,576" fill="none" stroke="black"/>
              <path d="M 360,32 L 360,80" fill="none" stroke="black"/>
              <path d="M 392,304 L 392,336" fill="none" stroke="black"/>
              <path d="M 416,88 L 416,368" fill="none" stroke="black"/>
              <path d="M 416,640 L 416,648" fill="none" stroke="black"/>
              <path d="M 480,32 L 480,80" fill="none" stroke="black"/>
              <path d="M 488,416 L 488,464" fill="none" stroke="black"/>
              <path d="M 488,528 L 488,576" fill="none" stroke="black"/>
              <path d="M 552,656 L 552,704" fill="none" stroke="black"/>
              <path d="M 48,32 L 152,32" fill="none" stroke="black"/>
              <path d="M 168,32 L 272,32" fill="none" stroke="black"/>
              <path d="M 360,32 L 480,32" fill="none" stroke="black"/>
              <path d="M 48,64 L 152,64" fill="none" stroke="black"/>
              <path d="M 168,64 L 272,64" fill="none" stroke="black"/>
              <path d="M 360,80 L 480,80" fill="none" stroke="black"/>
              <path d="M 48,160 L 152,160" fill="none" stroke="black"/>
              <path d="M 168,160 L 272,160" fill="none" stroke="black"/>
              <path d="M 48,208 L 152,208" fill="none" stroke="black"/>
              <path d="M 168,208 L 272,208" fill="none" stroke="black"/>
              <path d="M 112,240 L 200,240" fill="none" stroke="black"/>
              <path d="M 32,304 L 392,304" fill="none" stroke="black"/>
              <path d="M 32,336 L 392,336" fill="none" stroke="black"/>
              <path d="M 32,416 L 272,416" fill="none" stroke="black"/>
              <path d="M 344,416 L 488,416" fill="none" stroke="black"/>
              <path d="M 32,464 L 272,464" fill="none" stroke="black"/>
              <path d="M 344,464 L 488,464" fill="none" stroke="black"/>
              <path d="M 344,528 L 488,528" fill="none" stroke="black"/>
              <path d="M 144,560 L 336,560" fill="none" stroke="black"/>
              <path d="M 344,576 L 488,576" fill="none" stroke="black"/>
              <path d="M 112,656 L 552,656" fill="none" stroke="black"/>
              <path d="M 112,704 L 552,704" fill="none" stroke="black"/>
              <path d="M 92,216 L 104,240" fill="none" stroke="black"/>
              <path d="M 208,240 L 220,216" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="424,648 412,642.4 412,653.6" fill="black" transform="rotate(90,416,648)"/>
              <polygon class="arrowhead" points="424,368 412,362.4 412,373.6" fill="black" transform="rotate(90,416,368)"/>
              <polygon class="arrowhead" points="344,560 332,554.4 332,565.6" fill="black" transform="rotate(0,336,560)"/>
              <polygon class="arrowhead" points="224,112 212,106.4 212,117.6" fill="black" transform="rotate(90,216,112)"/>
              <polygon class="arrowhead" points="104,112 92,106.4 92,117.6" fill="black" transform="rotate(90,96,112)"/>
              <g class="text">
                <text x="76" y="52">QUIC</text>
                <text x="120" y="52">Frame</text>
                <text x="196" y="52">QUIC</text>
                <text x="240" y="52">Frame</text>
                <text x="296" y="52">...</text>
                <text x="388" y="52">QUIC</text>
                <text x="436" y="52">Header</text>
                <text x="388" y="68">(Outer</text>
                <text x="448" y="68">Packet)</text>
                <text x="32" y="132">[</text>
                <text x="60" y="132">SCHC</text>
                <text x="104" y="132">Frame</text>
                <text x="156" y="132">Header</text>
                <text x="232" y="132">Compression</text>
                <text x="288" y="132">]</text>
                <text x="96" y="148">|</text>
                <text x="216" y="148">|</text>
                <text x="100" y="180">Comp.Frame</text>
                <text x="220" y="180">Comp.Frame</text>
                <text x="296" y="180">...</text>
                <text x="100" y="196">(CF)</text>
                <text x="220" y="196">(CF)</text>
                <text x="144" y="260">|</text>
                <text x="8" y="276">[</text>
                <text x="64" y="276">Aggregation</text>
                <text x="132" y="276">into</text>
                <text x="176" y="276">Inner</text>
                <text x="220" y="276">SCHC</text>
                <text x="268" y="276">Packet</text>
                <text x="304" y="276">]</text>
                <text x="144" y="292">|</text>
                <text x="56" y="324">RID</text>
                <text x="80" y="324">|</text>
                <text x="100" y="324">L1</text>
                <text x="120" y="324">|</text>
                <text x="144" y="324">CF1</text>
                <text x="168" y="324">|</text>
                <text x="188" y="324">L2</text>
                <text x="208" y="324">|</text>
                <text x="232" y="324">CF2</text>
                <text x="256" y="324">|</text>
                <text x="280" y="324">...</text>
                <text x="304" y="324">|</text>
                <text x="324" y="324">Ln</text>
                <text x="344" y="324">|</text>
                <text x="368" y="324">CFn</text>
                <text x="144" y="356">|</text>
                <text x="64" y="372">[</text>
                <text x="92" y="372">QUIC</text>
                <text x="144" y="372">Payload</text>
                <text x="220" y="372">Encryption</text>
                <text x="272" y="372">]</text>
                <text x="320" y="388">[</text>
                <text x="348" y="388">SCHC</text>
                <text x="392" y="388">Outer</text>
                <text x="444" y="388">Header</text>
                <text x="520" y="388">Compression</text>
                <text x="576" y="388">]</text>
                <text x="416" y="404">|</text>
                <text x="80" y="436">Encrypted</text>
                <text x="144" y="436">Inner</text>
                <text x="188" y="436">SCHC</text>
                <text x="236" y="436">Packet</text>
                <text x="396" y="436">Compressed</text>
                <text x="460" y="436">QUIC</text>
                <text x="104" y="452">(QUIC</text>
                <text x="164" y="452">Payload)</text>
                <text x="420" y="452">Header</text>
                <text x="416" y="484">|</text>
                <text x="328" y="500">[</text>
                <text x="356" y="500">QUIC</text>
                <text x="404" y="500">Header</text>
                <text x="476" y="500">Protection</text>
                <text x="528" y="500">]</text>
                <text x="416" y="516">|</text>
                <text x="392" y="548">Protected</text>
                <text x="456" y="548">Comp.</text>
                <text x="388" y="564">QUIC</text>
                <text x="436" y="564">Header</text>
                <text x="416" y="596">|</text>
                <text x="376" y="612">[</text>
                <text x="416" y="612">Combine</text>
                <text x="456" y="612">]</text>
                <text x="416" y="628">|</text>
                <text x="160" y="676">Protected</text>
                <text x="244" y="676">Compressed</text>
                <text x="360" y="676">Encrypted</text>
                <text x="424" y="676">Inner</text>
                <text x="468" y="676">SCHC</text>
                <text x="516" y="676">Packet</text>
                <text x="180" y="692">QUIC</text>
                <text x="228" y="692">Header</text>
                <text x="392" y="692">(QUIC</text>
                <text x="452" y="692">Payload)</text>
                <text x="244" y="724">(Final</text>
                <text x="312" y="724">SCHC-QUIC</text>
                <text x="384" y="724">Packet)</text>
                <text x="164" y="756">Figure</text>
                <text x="204" y="756">1:</text>
                <text x="256" y="756">SCHC-QUIC</text>
                <text x="344" y="756">Compression</text>
                <text x="412" y="756">Flow</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
     +------------+ +------------+          +--------------+
     | QUIC Frame | | QUIC Frame | ...      | QUIC Header  |
     +------------+ +------------+          |(Outer Packet)|
           |              |                 +--------------+
           |              |                        |
           V              V                        |
   [ SCHC Frame Header Compression ]               |
           |              |                        |
     +------------+ +------------+                 |
     | Comp.Frame | | Comp.Frame | ...             |
     |    (CF)    | |    (CF)    |                 |
     +------------+ +------------+                 |
           \              /                        |
            \------------/                         |
                 |                                 |
[ Aggregation into Inner SCHC Packet ]             |
                 |                                 |
   +--------------------------------------------+  |
   | RID | L1 | CF1 | L2 | CF2 | ... | Ln | CFn |  |
   +--------------------------------------------+  |
                 |                                 |
       [ QUIC Payload Encryption ]                 V
                 |                     [ SCHC Outer Header Compression ]
                 |                                 |
   +-----------------------------+        +-----------------+
   | Encrypted Inner SCHC Packet |        | Compressed QUIC |
   |      (QUIC Payload)         |        |      Header     |
   +-----------------------------+        +-----------------+
                 |                                 |
                 |                      [ QUIC Header Protection ]
                 |                                 |
                 |                        +-----------------+
                 |                        | Protected Comp. |
                 +----------------------->|   QUIC Header   |
                                          +-----------------+
                                                   |
                                              [ Combine ]
                                                   |
                                                   V
             +------------------------+-----------------------------+
             | Protected Compressed   | Encrypted Inner SCHC Packet |
             |      QUIC Header       |       (QUIC Payload)        |
             +------------------------+-----------------------------+
                           (Final SCHC-QUIC Packet)

                 Figure 1: SCHC-QUIC Compression Flow
]]></artwork>
        </artset>
      </figure>
      <t>The specific steps involved are detailed below:</t>
      <section anchor="quic-frame-header-compression">
        <name>QUIC Frame Header Compression</name>
        <ul spacing="normal">
          <li>
            <t>Before QUIC frames are encrypted, their headers (and potentially
  other predictable metadata, depending on the SCHC rule) are
  processed using a set of predefined SCHC rules specific to QUIC
  frame types.</t>
          </li>
          <li>
            <t>Each QUIC Frame (e.g., STREAM frame header, ACK frame ranges, PING
frame type) is compressed into a "Compressed Frame" (CF).</t>
          </li>
          <li>
            <t>The payload of frames like STREAM frames is NOT compressed by SCHC
at this stage but remains associated with its compressed header/type.</t>
          </li>
          <li>
            <t>Specific SCHC rules MUST be defined for various QUIC frame types
and their fields.</t>
          </li>
        </ul>
      </section>
      <section anchor="inner-schc-packet-aggregation">
        <name>Inner SCHC Packet Aggregation</name>
        <ul spacing="normal">
          <li>
            <t>One or more Compressed Frames (CFs) destined for the same QUIC
packet are aggregated.</t>
          </li>
          <li>
            <t>This aggregation is formed into an "Inner SCHC Packet". The exact
structure and encoding for this aggregation require further specification.
It needs to allow the decompressor to correctly parse the individual
CFs and any associated uncompressed payload data.</t>
          </li>
          <li>
            <t>This might involve prefixing the aggregation with a SCHC Rule ID (RID)
that identifies the set of SCHC rules used for the frame header
compression (Section 3.1) and potentially defines the structure of the
aggregation itself.</t>
          </li>
          <li>
            <t>It may also involve including explicit Length (L) fields or using other
delimiting mechanisms defined by a specific SCHC "aggregation rule"
to separate the CFs and their associated payloads within the Inner SCHC Packet.</t>
          </li>
        </ul>
      </section>
      <section anchor="quic-payload-encryption">
        <name>QUIC Payload Encryption</name>
        <ul spacing="normal">
          <li>
            <t>The <em>entire</em> Inner SCHC Packet (RID, L/CF pairs) is treated as the
plaintext payload for QUIC packet encryption.</t>
          </li>
          <li>
            <t>Standard QUIC packet protection <xref target="rfc9001"/> is applied to encrypt
this payload.</t>
          </li>
        </ul>
      </section>
      <section anchor="outer-quic-header-compression">
        <name>Outer QUIC Header Compression</name>
        <ul spacing="normal">
          <li>
            <t>The QUIC packet header (Long or Short Header, including fields like
DCID, SCID, Packet Number, etc.) is compressed using a <em>separate</em>
set of SCHC rules designed for QUIC packet headers.</t>
          </li>
          <li>
            <t>This results in a "Compressed QUIC Header".</t>
          </li>
          <li>
            <t>The SCHC context and rules for outer header compression are distinct
from those used for inner frame compression.</t>
          </li>
        </ul>
      </section>
      <section anchor="quic-header-protection">
        <name>QUIC Header Protection</name>
        <ul spacing="normal">
          <li>
            <t>Standard QUIC Header Protection <xref target="rfc9001"/> is applied to the
<em>Compressed QUIC Header</em>.</t>
          </li>
          <li>
            <t>The specific mechanism needs to ensure that header protection can
be correctly applied and removed on the compressed header format.
This might involve defining SCHC rules such that the fields needed
for the protection algorithm (e.g., Packet Number, payload sample)
remain accessible, predictable, or are handled appropriately by the
SCHC rule definition. This interaction requires careful definition
(see Section 6).</t>
          </li>
        </ul>
        <t>The final packet sent over the link consists of the Protected
(Compressed QUIC Header) followed by the Encrypted (Inner SCHC Packet).</t>
      </section>
    </section>
    <section anchor="packet-formats-informative">
      <name>Packet Formats (Informative)</name>
      <t>This section provides a conceptual view based on the architecture. Precise
field sizes and encodings are outside the scope of this initial draft.</t>
      <section anchor="inner-schc-packet">
        <name>Inner SCHC Packet</name>
        <t>The structure of the Inner SCHC Packet needs to encapsulate one or more
Compressed Frames (CFs) and their associated payloads (if any) in a way
that can be parsed by the decompressor.</t>
        <t>One potential approach, drawing inspiration from techniques like those used
in <xref target="I-D.ietf-schc-icmpv6-compression"/>, could involve:</t>
        <ul spacing="normal">
          <li>
            <t>Using different SCHC Rule IDs (RIDs) for the Inner SCHC packet itself.
Each RID might implicitly define the number and types of QUIC frames
contained, or define a general structure.</t>
          </li>
          <li>
            <t>Employing SCHC Matching Operators (MOs) and Compression/Decompression
Actions (CDAs) to handle the variable fields within each frame's
compressed representation (CF).</t>
          </li>
          <li>
            <t>Using variable-length encoding mechanisms defined within SCHC or the
specific rule to handle lengths of payloads or other variable elements.</t>
          </li>
        </ul>
        <t>A simplified conceptual diagram might look like:</t>
        <figure anchor="Fig-Agre-frame">
          <name>Agregation Frame</name>
          <artwork><![CDATA[
+-----+----//-----+----//-----+----//--------+
| RID | L1 | CF1  | L2 | CF2  |...| Ln | CFn |
+-----+----//-----+----//-----+----//--------+
]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>
            <t><strong>RID:</strong> SCHC Rule ID for frame compression rules.</t>
          </li>
          <li>
            <t><strong>L:</strong> Length of the following CF (potentially including uncompressed
payload).</t>
          </li>
          <li>
            <t><strong>CF:</strong> Compressed Frame (compressed header/type + uncompressed
payload, if any).</t>
          </li>
        </ul>
      </section>
      <section anchor="final-schc-quic-packet-structure">
        <name>Final SCHC-QUIC Packet Structure</name>
        <figure anchor="Fig-full-message">
          <name>Full Message</name>
          <artwork><![CDATA[
+----------------------------------+--------------------------------+
| Protected Compressed QUIC Header | Encrypted Inner SCHC Packet    |
+----------------------------------+--------------------------------+
]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>
            <t><strong>Protected Compressed QUIC Header:</strong> The result of applying SCHC
compression (Section 3.4) and then QUIC Header Protection
(Section 3.5) to the Outer QUIC Header.</t>
          </li>
          <li>
            <t><strong>Encrypted Inner SCHC Packet:</strong> The result of encrypting the structure
defined in Section 4.1 using QUIC Payload Encryption (Section 3.3).</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="schc-context-considerations">
      <name>SCHC Context Considerations</name>
      <ul spacing="normal">
        <li>
          <t>This mechanism REQUIRES two distinct SCHC Contexts to be established
between the SCHC compression/decompression endpoints:  </t>
          <ul spacing="normal">
            <li>
              <t><strong>Frame Context:</strong> Contains rules for compressing QUIC Frame
 headers/types. Identified by the RID in the Inner SCHC Packet.</t>
            </li>
            <li>
              <t><strong>Packet Header Context:</strong> Contains rules for compressing the Outer
 QUIC Header. The method for identifying the applicable rule for
 this context (e.g., implicit, lower-layer signaling) needs
 further definition.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>The establishment, management, and synchronization of these SCHC
contexts are outside the scope of this document but are essential
prerequisites for operation (e.g., using mechanisms defined in
<xref target="rfc8724"/> or other means).</t>
        </li>
      </ul>
    </section>
    <section anchor="header-protection">
      <name>Header Protection</name>
      <t>QUIC packet headers contain sensitive information, like the Packet Number, which must be protected from pervasive observation while still allowing network devices to route packets based on other header fields (e.g., Connection IDs). QUIC employs a dedicated Header Protection mechanism, separate from the payload encryption, to achieve this. This section details the standard QUIC Header Protection mechanism defined in <xref target="rfc9001"/>, explains how it interacts with the proposed SCHC compression of the outer QUIC header, and discusses potential implications.</t>
      <section anchor="standard-quic-header-protection-mechanism">
        <name>Standard QUIC Header Protection Mechanism</name>
        <t>QUIC Header Protection uses a key derived specifically for this purpose and applies a pseudo-random mask to obfuscate certain header fields. The process ensures that only endpoints possessing the correct header protection key can remove the mask and correctly interpret the protected fields.</t>
        <t>The core of header protection is generating a 5-byte mask. This mask generation relies on:</t>
        <ul spacing="normal">
          <li>
            <t>The Header Protection Key</t>
          </li>
          <li>
            <t>A Ciphertext Sample: A small sample (typically 16 bytes, matching the AEAD algorithm's tag length) is taken from the encrypted payload of the QUIC packet. The sample starts at an offset calculated relative to the start of the Packet Number field in the header. Crucially, for sampling purposes, the Packet Number field is always assumed to be 4 bytes long (its maximum possible encoded length), regardless of its actual encoded length in the packet. This ensures the sampling offset is consistent even before the header is unprotected. Packets too short to provide a full sample must be discarded.</t>
          </li>
        </ul>
        <t>The header protection key and the ciphertext sample are fed into a specific cipher algorithm to produce the 5-byte mask.</t>
        <t>The generated 5-byte mask is XORed with specific parts of the QUIC header:</t>
        <ul spacing="normal">
          <li>
            <t>First Byte: The first byte of the mask is XORed with specific bits in the first byte of the header (the Flags byte). For Long Headers, this includes the 2 Reserved bits and the 2 Packet Number Length bits. For Short Headers, this includes the Reserved bits and the Packet Number Length bits (5 bits total). The most significant bits (Header Form, Fixed Bit, Long Packet Type / Spin Bit) are not masked.</t>
          </li>
          <li>
            <t>Packet Number Field: The remaining 4 bytes of the mask are XORed with the first 1 to 4 bytes of the Packet Number field, matching its encoded length</t>
          </li>
        </ul>
      </section>
      <section anchor="header-protection-with-schc-outer-header-compression">
        <name>Header Protection with SCHC Outer Header Compression</name>
        <t>In the SCHC-QUIC mechanism proposed, SCHC rules are applied to the Outer QUIC Header first. This compresses fields like Connection IDs, Packet Number, and flags based on the established SCHC Packet Header Context. The output is a "Compressed QUIC Header". This compressed header contains the residue of the compression – the information that could not be elided by the SCHC rules. The Rule ID (RID) for the outer header compression might also form part of this output. QUIC Header Protection is then applied to the resulting "Compressed QUIC Header" as depicted in the Fig. 4.</t>
        <t>This approach introduces specific requirements and interactions:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Protecting the Residue:</strong> The Header Protection mask is applied to the compressed representation. The SCHC rules used for the outer header must be designed such that the sensitive information QUIC aims to protect (primarily the Packet Number and its length) are either present in the residue in a predictable location and format, allowing the standard HP masking to be applied effectively or are reconstructible from the residue after HP removal, ensuring the HP process itself can derive the necessary inputs (like the original Packet Number for nonce generation, even if the PN field itself is compressed in the residue).</t>
          </li>
          <li>
            <t><strong>Protecting the Outer Rule ID:</strong> The SCHC outer header compression scheme requires transmitting the Rule ID (RID) to identify which set of compression rules are applied, this RID could potentially also be obfuscated by the Header Protection mask. Applying HP to the RID in this way contributes to making traffic analysis harder, as it obscures which specific compression rule was used for the outer header until HP is removed. Note: This applies only to the RID for the outer header compression. The RID for the inner frame compression is part of the Inner SCHC Packet, which becomes the encrypted payload and is protected by QUIC payload encryption.</t>
          </li>
          <li>
            <t><strong>Ciphertext Sampling:</strong> The standard HP mechanism calculates the ciphertext sample offset based on the Packet Number field location in the unprotected header. When HP is applied to a compressed header, the SCHC rule and the HP implementation must agree on how this offset is determined before HP removal and header decompression. The mechanism must ensure that the location of the (potentially compressed) Packet Number field within the compressed header is defined, allowing the receiver to calculate the correct sample offset from the encrypted payload before removing HP. This might require preserving the relative position or provide a fixed offset for sampling.</t>
          </li>
        </ul>
        <t>By applying HP to the compressed header residue (and potentially the outer RID), we aim to obfuscate the remaining header information and the specific compression details, making it more difficult for observers to infer traffic patterns or the structure of the compressed data.</t>
        <figure anchor="Fig-chp">
          <name>Header Protection with SCHC</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="432" width="624" viewBox="0 0 624 432" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,176 L 8,224" fill="none" stroke="black"/>
                <path d="M 24,32 L 24,80" fill="none" stroke="black"/>
                <path d="M 104,232 L 104,304" fill="none" stroke="black"/>
                <path d="M 112,80 L 112,112" fill="none" stroke="black"/>
                <path d="M 112,160 L 112,168" fill="none" stroke="black"/>
                <path d="M 152,368 L 152,400" fill="none" stroke="black"/>
                <path d="M 160,288 L 160,320" fill="none" stroke="black"/>
                <path d="M 200,32 L 200,80" fill="none" stroke="black"/>
                <path d="M 208,176 L 208,224" fill="none" stroke="black"/>
                <path d="M 248,32 L 248,80" fill="none" stroke="black"/>
                <path d="M 264,160 L 264,208" fill="none" stroke="black"/>
                <path d="M 360,80 L 360,152" fill="none" stroke="black"/>
                <path d="M 376,208 L 376,280" fill="none" stroke="black"/>
                <path d="M 376,320 L 376,400" fill="none" stroke="black"/>
                <path d="M 488,32 L 488,80" fill="none" stroke="black"/>
                <path d="M 504,160 L 504,208" fill="none" stroke="black"/>
                <path d="M 616,288 L 616,320" fill="none" stroke="black"/>
                <path d="M 616,368 L 616,400" fill="none" stroke="black"/>
                <path d="M 24,32 L 200,32" fill="none" stroke="black"/>
                <path d="M 248,32 L 488,32" fill="none" stroke="black"/>
                <path d="M 24,80 L 200,80" fill="none" stroke="black"/>
                <path d="M 248,80 L 488,80" fill="none" stroke="black"/>
                <path d="M 264,160 L 504,160" fill="none" stroke="black"/>
                <path d="M 8,176 L 208,176" fill="none" stroke="black"/>
                <path d="M 264,208 L 504,208" fill="none" stroke="black"/>
                <path d="M 8,224 L 208,224" fill="none" stroke="black"/>
                <path d="M 160,288 L 616,288" fill="none" stroke="black"/>
                <path d="M 104,304 L 152,304" fill="none" stroke="black"/>
                <path d="M 160,320 L 616,320" fill="none" stroke="black"/>
                <path d="M 152,368 L 616,368" fill="none" stroke="black"/>
                <path d="M 152,400 L 616,400" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="384,360 372,354.4 372,365.6" fill="black" transform="rotate(90,376,360)"/>
                <polygon class="arrowhead" points="384,280 372,274.4 372,285.6" fill="black" transform="rotate(90,376,280)"/>
                <polygon class="arrowhead" points="368,152 356,146.4 356,157.6" fill="black" transform="rotate(90,360,152)"/>
                <polygon class="arrowhead" points="160,304 148,298.4 148,309.6" fill="black" transform="rotate(0,152,304)"/>
                <polygon class="arrowhead" points="120,168 108,162.4 108,173.6" fill="black" transform="rotate(90,112,168)"/>
                <polygon class="arrowhead" points="120,112 108,106.4 108,117.6" fill="black" transform="rotate(90,112,112)"/>
                <g class="text">
                  <text x="60" y="52">QUIC</text>
                  <text x="108" y="52">Packet</text>
                  <text x="164" y="52">Header</text>
                  <text x="296" y="52">Encrypted</text>
                  <text x="360" y="52">Inner</text>
                  <text x="404" y="52">SCHC</text>
                  <text x="452" y="52">Packet</text>
                  <text x="120" y="68">(Unprotected)</text>
                  <text x="316" y="68">(Encrypted</text>
                  <text x="380" y="68">QUIC</text>
                  <text x="436" y="68">Payload)</text>
                  <text x="400" y="116">(Sample</text>
                  <text x="460" y="116">Bytes)</text>
                  <text x="8" y="132">[</text>
                  <text x="36" y="132">SCHC</text>
                  <text x="80" y="132">Outer</text>
                  <text x="132" y="132">Header</text>
                  <text x="208" y="132">Compression</text>
                  <text x="264" y="132">]</text>
                  <text x="112" y="148">|</text>
                  <text x="300" y="180">Header</text>
                  <text x="372" y="180">Protection</text>
                  <text x="436" y="180">Mask</text>
                  <text x="476" y="180">Gen.</text>
                  <text x="60" y="196">Compressed</text>
                  <text x="124" y="196">QUIC</text>
                  <text x="172" y="196">Header</text>
                  <text x="312" y="196">(Uses</text>
                  <text x="348" y="196">HP</text>
                  <text x="376" y="196">Key</text>
                  <text x="400" y="196">+</text>
                  <text x="440" y="196">Sample)</text>
                  <text x="72" y="212">+</text>
                  <text x="100" y="212">Rule</text>
                  <text x="132" y="212">ID</text>
                  <text x="416" y="260">(5-byte</text>
                  <text x="472" y="260">Mask)</text>
                  <text x="200" y="308">Apply</text>
                  <text x="244" y="308">Mask</text>
                  <text x="288" y="308">(XOR)</text>
                  <text x="324" y="308">to</text>
                  <text x="368" y="308">Residue</text>
                  <text x="428" y="308">Header</text>
                  <text x="484" y="308">fields</text>
                  <text x="520" y="308">+</text>
                  <text x="548" y="308">Rule</text>
                  <text x="580" y="308">ID</text>
                  <text x="200" y="388">Protected</text>
                  <text x="284" y="388">Compressed</text>
                  <text x="344" y="388">Hdr</text>
                  <text x="424" y="388">Encrypted</text>
                  <text x="488" y="388">Inner</text>
                  <text x="532" y="388">SCHC</text>
                  <text x="580" y="388">Packet</text>
                  <text x="308" y="420">(Final</text>
                  <text x="376" y="420">SCHC-QUIC</text>
                  <text x="448" y="420">Packet)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
  +---------------------+     +-----------------------------+     
  |  QUIC Packet Header |     | Encrypted Inner SCHC Packet |
  |     (Unprotected)   |     |   (Encrypted QUIC Payload)  |
  +----------+----------+     +-------------+---------------+
             |                              |
             V                              | (Sample Bytes)
[ SCHC Outer Header Compression ]           |
             |                              V
             V                  +------------+----------------+
+------------------------+      | Header Protection Mask Gen. |
| Compressed QUIC Header |      |   (Uses HP Key + Sample)    |
|       + Rule ID        |      +-------------+---------------+
+------------------------+                    |
            |                                 |
            |                                 | (5-byte Mask)
            |                                 V
            |      +--------------------------+-----------------------------+
            +----->|  Apply Mask (XOR) to Residue Header fields + Rule ID   |
                   +--------------------------+-----------------------------+
                                              |
                                              V
                  +---------------------------+-----------------------------+
                  | Protected Compressed Hdr  | Encrypted Inner SCHC Packet |
                  +---------------------------+-----------------------------+
                                   (Final SCHC-QUIC Packet)
]]></artwork>
          </artset>
        </figure>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <ul spacing="normal">
        <li>
          <t>SCHC itself does not provide encryption. This mechanism relies on
QUIC's standard payload encryption and header protection.</t>
        </li>
        <li>
          <t>Payload encryption is applied <em>after</em> frame aggregation, ensuring
the confidentiality and integrity of the compressed frames and their
payloads.</t>
        </li>
        <li>
          <t>As detailed in Section 6, Header protection is applied <em>after</em> outer QUIC header compression. This interaction requires careful design choices as mentioned above.</t>
        </li>
        <li>
          <t>Compression techniques can potentially leak information through
variations in output size. The security implications of this for
QUIC metadata (frame types, packet numbers, etc.) MUST be analyzed.</t>
        </li>
        <li>
          <t>The security of the SCHC context establishment and management
process is paramount. Compromised contexts could lead to incorrect
decompression or information disclosure.</t>
        </li>
      </ul>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank (in alphabetic order): Nicolas Kuhn</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="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>This document defines the Static Context Header Compression and fragmentation (SCHC) framework, which provides both a header compression mechanism and an optional fragmentation mechanism. SCHC has been designed with Low-Power Wide Area Networks (LPWANs) in mind.</t>
            <t>SCHC compression is based on a common static context stored both in the LPWAN device and in the network infrastructure side. This document defines a generic header compression mechanism and its application to compress IPv6/UDP headers.</t>
            <t>This document also specifies an optional fragmentation and reassembly mechanism. It can be used to support the IPv6 MTU requirement over the LPWAN technologies. Fragmentation is needed for IPv6 datagrams that, after SCHC compression or when such compression was not possible, still exceed the Layer 2 maximum payload size.</t>
            <t>The SCHC header compression and fragmentation mechanisms are independent of the specific LPWAN technology over which they are used. This document defines generic functionalities and offers flexibility with regard to parameter settings and mechanism choices. This document standardizes the exchange over the LPWAN between two SCHC entities. Settings and choices specific to a technology or a product are expected to be grouped into profiles, which are specified in other documents. Data models for the context and profiles are out of scope.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8724"/>
        <seriesInfo name="DOI" value="10.17487/RFC8724"/>
      </reference>
      <reference anchor="rfc9000">
        <front>
          <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
          <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
          <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
          <date month="May" year="2021"/>
          <abstract>
            <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9000"/>
        <seriesInfo name="DOI" value="10.17487/RFC9000"/>
      </reference>
      <reference anchor="rfc9001">
        <front>
          <title>Using TLS to Secure QUIC</title>
          <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
          <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
          <date month="May" year="2021"/>
          <abstract>
            <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9001"/>
        <seriesInfo name="DOI" value="10.17487/RFC9001"/>
      </reference>
      <reference anchor="I-D.ietf-schc-icmpv6-compression">
        <front>
          <title>Static Context Header Compression (SCHC) for the Internet Control Message Protocol (ICMPv6)</title>
          <author fullname="Dominique Barthel" initials="D." surname="Barthel">
         </author>
          <author fullname="Laurent Toutain" initials="L." surname="Toutain">
            <organization>IMT Atlantique</organization>
          </author>
          <date day="25" month="November" year="2024"/>
          <abstract>
            <t>   This document describes how the ICMPv6 protocol can be integrated
   into the SCHC architecture.  It extends the YANG Data Model with new
   field IDs specific to ICMPv6 headers.

   To enhance the compression of ICMPv6 error messages, the document
   also introduces two new Matching Operators and two new Compression
   Decompression Actions to manipulate the ICMPv6 payload.

   Finally, for constrained networks such as LPWAN, it introduces a
   proxy behavior, where a SCHC Core end-point may anticipate the device
   reaction to incorrect messages.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-schc-icmpv6-compression-01"/>
      </reference>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA8Vc6Y7bxpb+z6co2D8suSV5yXLnCpjBdNruuBFv191OBvBc
GBRZkgrNRWGR3VZiB/cd5g3nSeZsVSwu6razYITA0UJWnTr7+c5hz+fzKLJ1
XKTv46ws9FLVVaMjs6vona0fP3z494ePo7RMijiHn9MqXtdza6pya+Y22Sbz
nxuTzJMy31XaWlMW84cPoySul8oU6zKyzSo39P3Ffgf3nz29OI2inVlGStl9
Xum1Xap7e23v4RdlVfe+qSuT1O1n3CcOv6jLxH2IalNnsMWdf7w9O1EBRaqx
ptio85NnJ3eieLWq9NWSPim8MrreyKefyuoSL/y+KptdFFc6BnqLWleFrqO4
qbdltYzmcC4g8HyhzokJQANz5jzO46r9sqxg2bMXF+q4zuKiNj8DW+k8WgP5
wGSVapXF6mQb17HZFLqKDV6RmHq/VF99883fvlUnQD8w9Fxf4QXwMdUfiAlN
UVdw1WkVFwnepPPYZEtlkYQFC+c/TV7PY7/3As8gtD9fqIuygV0LT/zzuKl0
UQff/3/QnzEVi5qp6B9hXUVRUVZ5XJsrjQpUrZN/+9vjr5eK3//94cOHS//2
Eb49mz9ZGF2vWVVNku+uvg2VdRmhlvolo2g+n6t4BccELYuii62xCnS/yZE5
dqcTszbaqljlOtnGhbG5gttVvNtle9KxGlZK1EkJavOhVs90nOoqOgl0cYKq
NgW9JeVTk3+A+Vyqt09ee1XDuwud1HC1nSpQ90td20V0VqtMXwGbN0AA6Sus
4Y6iVmW9VfVW86p8k9rS9gqsG3+K+KMF0aoajFH5owNZ5ZrvXFegDxbWLVAC
OlXXpt6agu6XVXfxPivjFJQIuQNHr8o42arY5BZJsiBr4FICUsv2qtJpkzBV
UQnUIw0zVe5qk5tfkGMroO7apEB9Y+Fosir8t4srYGWTxRUss9KFhjVNnEXI
76s4a+JVhkdoF5hbXViDglQ20UVcmdKqzFyipuodSC8GQoBheVMAdcTeRV/E
KexSwPmRk8TjuEq2pgZpgGYuWD1yk6aZjqK7KLGqhPPhWlFE/Pv1V1HET58U
MObKpKQuViewwAzYkRkkfKbyJqvNLtMfgMegbYXdgfOL4BbwaGWmkFeoFQv1
09bAQfUajw8kzpSpbVfAliRMkvMyBvaDsZosgy1RQ0h/W8koJwukiJQfRYen
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
tkX/BzqTDX+UTQAA

-->

</rfc>
