<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.4) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-lampin-voici-02" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="VOICI">VOICI</title>

    <author initials="Q." surname="Lampin" fullname="Quentin Lampin">
      <organization>Orange</organization>
      <address>
        <postal>
          <street>Orange 3 Massifs - 22 Chemin du Vieux Chene</street>
          <city>Meylan</city>
          <code>38240</code>
          <country>France</country>
        </postal>
        <email>quentin.lampin@orange.com</email>
      </address>
    </author>

    <date year="2026" month="June" day="26"/>

    <area>Internet</area>
    <workgroup>SCHC Working Group</workgroup>
    

    <abstract>


<?line 51?>

<t>The Static Context Header Compression (SCHC) framework identified the need for
a minimal transport encapsulation that provides Session multiplexing when
extrinsic Discriminators are insufficient.  This document specifies a Link
Multiplexer (VOICI) that addresses those SCHC-driven requirements while
remaining general enough to accommodate other compression mechanisms and
uncompressed payloads.  The encapsulation is designed for minimal overhead,
reducing to 1 byte in the common case (7 inline Session IDs), while supporting
optional integrity protection and original EtherType/port recovery.</t>



    </abstract>



  </front>

  <middle>


<?line 62?>

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

<t>The SCHC framework <xref target="SCHC"/> provides header compression and optional
fragmentation based on static contexts shared between Endpoints.  In the
common deployment -- a single Instance per Endpoint over a single link --
the mapping between the link and the Instance is trivial: all Datagrams on
the link belong to that one Instance, and no multiplexing mechanism is
needed.</t>

<t>However, two deployment scenarios require a mechanism to distinguish
multiple Sessions over a shared link:</t>

<t><list style="symbols">
  <t>An Endpoint hosts multiple Instances serving different Domains or tenants.</t>
  <t>Multiple Sessions share an Ethernet segment or IPv6 link.</t>
</list></t>

<t>These requirements were first identified by the SCHC architecture
<xref target="SCHC-ARCH"/> for the case of SCHC-compressed Datagrams.  But the need is
broader than SCHC alone.  Operator and industrial deployments often carry
a mix of traffic types on the same constrained link: SCHC-compressed
Datagrams from devices that use static Contexts; Datagrams from other
mechanisms; and uncompressed management or diagnostic traffic that bypasses
compression.  In all of these cases, transport-level multiplexing, and
optional integrity are desirable.</t>

<t>This document specifies a Link Multiplexer (VOICI) that satisfies the
requirements identified for SCHC while remaining general enough for other
compression mechanisms.  The VOICI header carries a Session ID for
multiplexing, a Content Identifier for dispatching the Datagram to the
correct handler, and optional integrity protection.  The encapsulation is
designed for minimal overhead, reducing to 1 byte in the common case
(inline Session IDs 0-6 with 2-bit Content Identifier).</t>

<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL
NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;,
&quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be interpreted as
described in BCP14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?></t>

</section>
<section anchor="requirements"><name>Requirements</name>

<t>The requirements below are organized into two groups.  Requirements 1-3 were
first identified by the SCHC architecture <xref target="SCHC-ARCH"/> for the specific
case of SCHC-compressed Datagrams.  Requirements 4-5 were added when the
scope was broadened to encompass other compression mechanisms and
uncompressed payloads.</t>

<section anchor="requirements-driven-by-schc"><name>Requirements driven by SCHC</name>

<t><list style="numbers" type="1">
  <t><strong>Session identification</strong>: A mechanism to distinguish Sessions and
route Datagrams to the correct processing handler (for example, a SCHC
Instance).  The identifier (Session ID) is locally significant to the
link.</t>
  <t><strong>Original EtherType/port recovery (optional)</strong>: A mechanism to carry the
original EtherType or UDP port number when the carrier uses the SCHC
EtherType or SCHC UDP port. This is needed when the payload is
decompressed so that the receiver can restore the original framing layer 
after decompression.</t>
  <t><strong>Integrity protection (optional)</strong>: A mechanism to detect corruption
of the Datagram, including the Session ID and the compressed residue.</t>
</list></t>

</section>
<section anchor="requirements-driven-by-multi-mechanism-and-uncompressed-payloads"><name>Requirements driven by multi-mechanism and uncompressed payloads</name>

<t><list style="numbers" type="1">
  <t><strong>Content identification</strong>: A mechanism to identify how the Datagram
payload is encoded when the link carries Datagrams from multiple
mechanisms (for example, SCHC, uncompressed).  This allows the receiver
to dispatch the Datagram to the correct decompressor without inspecting
its contents.</t>
  <t><strong>Layer independence</strong>: The encapsulation MUST operate over any link
layer that carries compressed traffic, whether identified by an
Ethertype, IP Protocol Number, or UDP port <xref target="SCHC-PROTO-NUMS"/>.</t>
</list></t>

</section>
</section>
<section anchor="gap-analysis"><name>Gap Analysis</name>

<t>Several existing mechanisms can provide multiplexing or labeling. This
section analyzes their suitability for SCHC and identifies the gap that
VOICI fills.</t>

<section anchor="mpls"><name>MPLS</name>

<t>MPLS labels provide efficient multiplexing and are
widely deployed in operator networks.  However:</t>

<t><list style="symbols">
  <t>MPLS adds 4 bytes per label, which may
be excessive for highly constrained deployments.</t>
  <t>MPLS is not available on all link types relevant to SCHC (LPWAN, PPP,
low-speed serial links).</t>
  <t>MPLS provides no integrity protection.</t>
</list></t>

</section>
<section anchor="udp-encapsulation"><name>UDP Encapsulation</name>

<t>UDP is commonly used for Internet traversal and NAT traversal. The UDP
source port can carry a Session ID:</t>

<t><list style="symbols">
  <t>The UDP header is 8 bytes.</t>
  <t>Features a 16 bits Checksum.</t>
  <t>Using the UDP source port as Session ID is fragile in the presence of
NAT (port remapping) and port exhaustion (65535 limit shared with
other applications).</t>
  <t>UDP is only available above IP.</t>
</list></t>

</section>
<section anchor="ip-protocol-number-and-schc-ethertype"><name>IP Protocol Number and SCHC Ethertype</name>

<t>The SCHC IP Protocol Number and Ethertype <xref target="SCHC-PROTO-NUMS"/> identify
SCHC traffic at the respective layers but do not provide:</t>

<t><list style="symbols">
  <t>Session multiplexing (one protocol number or Ethertype per link, not
per Session).</t>
  <t>Integrity protection.</t>
</list></t>

<t>They are necessary to identify SCHC traffic but insufficient for
multiplexing.</t>

</section>
<section anchor="quic"><name>QUIC</name>

<t>QUIC <xref target="RFC9000"/> is a multiplexed, UDP-based transport that provides stream
multiplexing, reliability, flow control, and mandatory encryption via TLS
1.3.  While QUIC satisfies multiplexing and integrity requirements, it is
generally infeasible for SCHC target deployments:</t>

<t><list style="symbols">
  <t>QUIC operates exclusively over UDP, requiring a full IP stack.</t>
  <t>The mandatory TLS 1.3 handshake and AEAD encryption require cryptographic
hardware or sufficient memory that constrained endpoints may not
possess.</t>
  <t>The minimum AEAD ciphertext size (16 bytes for AES-128-GCM) combined
with the TLS record and QUIC headers results in a per-packet overhead
over 32 bytes.</t>
</list></t>

</section>
<section anchor="summary"><name>Summary</name>

<texttable title="Comparison of multiplexing mechanisms" anchor="tab-gap-summary">
      <ttcol align='left'>Mechanism</ttcol>
      <ttcol align='left'>Multiplexing</ttcol>
      <ttcol align='left'>Integrity</ttcol>
      <ttcol align='left'>Overhead</ttcol>
      <ttcol align='left'>Link Coverage</ttcol>
      <c>Ethertype</c>
      <c>No</c>
      <c>No</c>
      <c>0 bytes</c>
      <c>IEEE 802 only</c>
      <c>MPLS</c>
      <c>Yes</c>
      <c>No</c>
      <c>4+ bytes</c>
      <c>Ethernet, IP</c>
      <c>IP Protocol Num</c>
      <c>No</c>
      <c>No</c>
      <c>0 bytes</c>
      <c>IP only</c>
      <c>UDP Protocol Num</c>
      <c>No</c>
      <c>Yes</c>
      <c>8 bytes</c>
      <c>over UDP only</c>
      <c>UDP Port</c>
      <c>Yes</c>
      <c>Yes</c>
      <c>8 bytes</c>
      <c>over UDP only</c>
      <c>QUIC</c>
      <c>Yes</c>
      <c>Yes</c>
      <c>32+ bytes</c>
      <c>over QUIC only</c>
      <c><strong>VOICI</strong></c>
      <c><strong>Yes</strong></c>
      <c><strong>Opt.</strong></c>
      <c><strong>1 byte</strong></c>
      <c><strong>Any</strong></c>
</texttable>

<t>VOICI fills the gap by providing multiplexing, integrity, content mechanism
identification, and original EtherType/port recovery with minimal
overhead.  The comparison is summarized in <xref target="tab-gap-summary"/>.</t>

</section>
<section anchor="encoding-within-schc-datagram"><name>Encoding Within SCHC Datagram</name>

<t>Encoding session or version information inside the SCHC rules or rule
results would couple transport-layer concerns (multiplexing, version
negotiation) to compression-layer concerns (what to compress, how to parse
the residue).  A separate encapsulation keeps the SCHC datagram focused on
compression results and allows the transport header to be added or removed
without modifying the compression strategy or the Context/Rules.</t>

<t>Furthermore, when multiple compression mechanisms share the same link, an
inner-field approach would require every mechanism to reserve space for the
same routing metadata, reducing compression efficiency. VOICI places this
metadata in a single, mechanism-agnostic header.</t>

</section>
</section>
<section anchor="integration-within-schc-framework"><name>Integration within SCHC framework</name>

<t>VOICI integrates at the carrier layer using the SCHC Ethertype and IP/UDP
protocol numbers defined in <xref target="SCHC-PROTO-NUMS"/>. When multiplexing is required,
these values identify VOICI traffic on the wire. On deployments where explicit 
multiplexing is not needed, i.e., provided by the supporting lower layers, VOICI
is optional. The use of VOICI is part of the Endpoint configuration.</t>

<t>On the sender side, the VOICI module prepends its header to the Datagram and
replaces the original EtherType, IP Protocol Number, or UDP port number with
the corresponding SCHC Ethertype or IP/UDP protocol number.  If the original
framing information must be preserved for later restoration, the Original
EtherType/Port flag (O) is set and the field is populated.</t>

<t>On the receiver side, packets identified by the SCHC Ethertype or IP/UDP
protocol number are handed to the VOICI dispatcher. The VOICI module parses the
header, uses the Session ID and CI field to route the Datagram to the correct
processing handler, strips its own header, and optionally restores the original
EtherType, IP Protocol Number, or UDP port number before passing the 
reconstituted frame to upper layers.</t>

</section>
<section anchor="header-format"><name>Header Format</name>

<figure title="VOICI Header" anchor="fig-voici-header"><artwork><![CDATA[
 0                   1                   2
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3   bits
+-+-+-+---+-----+ - - - - - - - - - - - - - - - +
|V|O|I|CI | SSS |         Session ID (long)     |
+-+-+-+---+-----+ - - - - - - - - - - - - - - - +
+- - - - - - - - - - - - - - - -+
|              CRC              | (optional, present if I=1)
+- - - - - - - - - - - - - - - -+
+- - - - - - - - - - - - - - - -+ (optional, present if O=1,
|    Original EtherType/Port    |  2B for Ethertype or UDP port,
+- - - - - - - - - - - - - - - -+  1B for IPv6 Next Header)
]]></artwork></figure>

<t>The V-O-I flags (3 bits), CI field (2 bits), and the SSS field (3 bits) are
always present.  The <spanx style="verb">SSS</spanx> field uses a uniform encoding rule: values 0-6
represent an inlined value in the first byte, while 7 triggers a LEB128
variable-length integer in the following byte(s) with offset +7.  For
Unprocessed/Raw and SCHC, SSS encodes the Session ID (<spanx style="verb">SID = SSS</spanx> or
<spanx style="verb">SID = LEB128_val + 7</spanx>).  For the Extended CI mechanism, SSS encodes the
Extended CI value.  For Reserved CI values, the interpretation is defined by
the future profile.  The CRC (2 bytes) is present when I=1.  The Original
EtherType/Port (1-2 bytes) is present when O=1.</t>

<t>The Datagram payload follows immediately after the last header field.</t>

<t><strong>Parsing order:</strong></t>

<t><list style="numbers" type="1">
  <t>Read byte 0; extract V, O, I, CI, SSS.</t>
  <t>If CI indicates Reserved:
a. The Datagram MUST be discarded.</t>
  <t>If CI indicates Unprocessed/Raw or SCHC (CI in {0, 1}):
a. Decode SSS as the Session ID:
  <list style="symbols">
      <t>If SSS &lt; 7: <spanx style="verb">SID = SSS</spanx> (1-byte header).</t>
      <t>If SSS == 7: read a LEB128 integer from following byte(s);
<spanx style="verb">SID = LEB128_val + 7</spanx>.</t>
    </list></t>
  <t>If CI indicates Extended CI (CI == 3):
a. Decode SSS as the Extended CI value:
  <list style="symbols">
      <t>If SSS &lt; 7: <spanx style="verb">Ext_CI = SSS + 3</spanx> (1-byte header so far).</t>
      <t>If SSS == 7: read a LEB128 integer from following byte(s);
<spanx style="verb">Ext_CI = LEB128_val + 10</spanx>.
b. Read the Session ID as a LEB128 integer from the following byte(s).</t>
    </list></t>
  <t>If I=1, read 2-byte CRC and compute expected CRC over all bytes read so
far (flag byte, Extended CI bytes if CI=3, Session ID), Original
EtherType/Port (if O=1), and the Datagram payload; drop frame if CRC is
invalid.</t>
  <t>If O=1, read Original EtherType/Port field (2 bytes for Ethernet/UDP,
1 byte for IPv6 Next Header).</t>
  <t>Pass remaining buffer to the identified handler and recover
original/content.</t>
  <t>If O=1, restore original Ethertype or Port number and return processed frame
to original handler.</t>
</list></t>

<section anchor="fields"><name>Fields</name>

<t><list style="symbols">
  <t><strong>V (1 bit):</strong>  VOICI header format version.  V=0 for this draft. V=1 for 
future VOICI revisions.</t>
  <t><strong>O (1 bit):</strong>  Original EtherType/Port present.  When set, the Original
EtherType/Port field is present, carrying the EtherType, IP Next Header,
or UDP port number that was replaced by the VOICI EtherType, VOICI IP
Protocol Number, or VOICI UDP port.  The field is interpreted as an
EtherType when VOICI is carried over a link-layer transport (for example,
IEEE 802 Ethertype), as a Next Header if carried over IP, and as a UDP
port when VOICI is carried in a UDP payload.  This restoration is an VOICI
responsibility; the Content Mechanism does not need to manage framing
recovery and dispatching to original handler.</t>
  <t><strong>I (1 bit):</strong>  Integrity flag.  When set, a CRC-16 field is present and
covers the Session ID through the end of the datagram.  When clear, no
integrity check is carried.</t>
  <t><strong>CI (2 bits):</strong>  Content Identifier.  Identifies the mechanism used for
the datagram payload.  VOICI profiles register new CI values as needed.  <vspace blankLines='1'/>
The initial CI assignments are:</t>
</list></t>

<texttable title="Initial CI assignments" anchor="tab-ci-initial">
      <ttcol align='left'>CI</ttcol>
      <ttcol align='left'>Content Mechanism</ttcol>
      <c>0</c>
      <c>Unprocessed / raw</c>
      <c>1</c>
      <c>SCHC</c>
      <c>2</c>
      <c>Reserved for future mechanisms</c>
      <c>3</c>
      <c>Extended CI</c>
</texttable>

<t>Profiles that register a new CI value MUST specify the mechanism and
its parameters.</t>

<t><list style="symbols">
  <t><strong>SSS (3 bits):</strong>  Session ID prefix (for Unprocessed/Raw and SCHC) or
Extended CI value (for Extended CI).  The SSS field uses an inline/extended
encoding:  <list style="symbols">
      <t><strong>SSS in 0..6:</strong> The value is inlined in the first byte.
      <list style="symbols">
          <t>For Unprocessed/Raw or SCHC: <spanx style="verb">SID = SSS</spanx>.  Header is 1 byte
(unless O=1 or I=1).</t>
          <t>For Extended CI: <spanx style="verb">Ext_CI = SSS + 3</spanx>.  A Session ID follows as a
LEB128 integer.</t>
        </list></t>
      <t><strong>SSS = 7:</strong> A LEB128 variable-length integer follows.
      <list style="symbols">
          <t>For Unprocessed/Raw or SCHC: read LEB128 value;
<spanx style="verb">SID = LEB128_val + 7</spanx>.</t>
          <t>For Extended CI: read LEB128 value;
<spanx style="verb">Ext_CI = LEB128_val + 10</spanx>.  If SSS was inline (0-6), the Session ID
follows immediately after the first byte.  If SSS was 7, the Session
ID follows immediately after the LEB128 integer.</t>
        </list></t>
    </list>
This gives 7 inline values in the 1-byte form, with continuous
extension to 16-bit values via LEB128.</t>
  <t><strong>Session ID (variable length):</strong>  Identifies the logical session that
owns this Datagram.  When a mechanism is registered with VOICI, the
mechanism profile assigns Session IDs and registers them with the VOICI
instance.  The receiver VOICI uses the Session ID to dispatch the
Datagram to the correct handler -- for SCHC, the handler is an SCHC
Instance; for Unprocessed/Raw, the handler is the raw dispatch path.
The Session ID space (0-65535) is local to the link over which VOICI
is carried and to the Content Mechanism.  <vspace blankLines='1'/>
For CI values 00, 01 (Unprocessed/Raw and SCHC), the Session ID is derived 
from the SSS field as described in the parsing order (SID = SSS for inline 
values, SID = LEB128_val + 7 for extended values).  For Extended CI, the
Session ID follows the Extended CI value as a LEB128 integer.  <vspace blankLines='1'/>
The LEB128 encoding follows <xref target="DWARF"/>:
  - If the value is less than 128, a single byte is used (MSB = 0).
  - If the value is 128 or greater, two bytes are used (first byte
    MSB = 1).
  - No values larger than 16 bits (65535) are supported.  <vspace blankLines='1'/>
The receiver reads the Session ID by inspecting the most significant
bit of each LEB128 byte: if the MSB is 1, the next byte is part of the
value; if 0, the byte is the last.</t>
  <t><strong>CRC (16 bits, optional):</strong>  Present when I=1.  CRC-16/CCITT-FALSE
  over the flag byte (V-O-I-CI-SSS), the Extended CI value bytes (if
  CI=3), the Session ID, the Original EtherType/Port field (if O=1),
  and the entire Datagram payload.</t>
  <t><strong>Original EtherType/Port (1-2 bytes, optional):</strong>  Present when O=1.
Carries the EtherType or UDP port number that was replaced by the VOICI
carrier.  The field is interpreted as an EtherType when VOICI is carried
over a link-layer transport (for example, IEEE 802 Ethertype) and as a
UDP port when VOICI is carried in a UDP payload.</t>
</list></t>

</section>
<section anchor="minimal-header"><name>Minimal Header</name>

<t>When no optional fields are needed (V=0, O=0, I=0) and the SSS field
encodes an inline value (0-6), the VOICI header reduces to a single byte:</t>

<figure title="Minimal VOICI Header (1 byte)" anchor="fig-voici-minimal"><artwork><![CDATA[
 0 1 2 3 4 5 6 7   bit
+-+-+-+---+-----+
|V|O|I|CI |S S S| (inline value, 1 byte)
+-+-+-+---+-----+
]]></artwork></figure>

</section>
<section anchor="header-size-summary"><name>Header Size Summary</name>

<t>VOICI header sizes for various configurations (Unprocessed/Raw and SCHC):</t>

<texttable title="VOICI header size summary (Unprocessed/Raw, SCHC)" anchor="tab-header-size">
      <ttcol align='left'>Configuration</ttcol>
      <ttcol align='left'>V</ttcol>
      <ttcol align='left'>O</ttcol>
      <ttcol align='left'>I</ttcol>
      <ttcol align='left'>SSS 0-6</ttcol>
      <ttcol align='left'>SSS 7-133</ttcol>
      <ttcol align='left'>SSS 134+</ttcol>
      <c>Session ID only</c>
      <c>0</c>
      <c>0</c>
      <c>0</c>
      <c>1 B</c>
      <c>2 B</c>
      <c>3 B</c>
      <c>+ CRC</c>
      <c>0</c>
      <c>0</c>
      <c>1</c>
      <c>3 B</c>
      <c>4 B</c>
      <c>5 B</c>
      <c>+ Orig. EtherType/UDP Port</c>
      <c>0</c>
      <c>1</c>
      <c>0</c>
      <c>3 B</c>
      <c>4 B</c>
      <c>5 B</c>
      <c>+ Orig. IP Next Header</c>
      <c>0</c>
      <c>1</c>
      <c>0</c>
      <c>2 B</c>
      <c>3 B</c>
      <c>4 B</c>
      <c>All fields</c>
      <c>0</c>
      <c>1</c>
      <c>1</c>
      <c>4-5 B</c>
      <c>5-6 B</c>
      <c>6-7 B</c>
</texttable>

<t>Extended CI (CI=3) adds the Extended CI value and a LEB128 Session ID;
the minimum is 2 bytes (flag byte + 1-byte Session ID, SSS inline),
growing to 6 bytes (SSS=7 with 2-byte LEB128 Ext_CI + 2-byte LEB128 SID).</t>

</section>
<section anchor="header-field-reference"><name>Header Field Reference</name>

<texttable title="VOICI header field summary" anchor="tab-header-fields">
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Size</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>V</c>
      <c>1 bit</c>
      <c>VOICI header version</c>
      <c>O</c>
      <c>1 bit</c>
      <c>Original EtherType/Port presence</c>
      <c>I</c>
      <c>1 bit</c>
      <c>CRC presence</c>
      <c>CI</c>
      <c>2 bits</c>
      <c>Content Identifier</c>
      <c>SSS</c>
      <c>3 bits</c>
      <c>Inline value (SID or Extended CI, 0-6)</c>
      <c>Extended CI</c>
      <c>0-2 B</c>
      <c>Extended CI value (inline or LEB128 + 10)</c>
      <c>Session ID</c>
      <c>0-2 B</c>
      <c>Session identifier (inline, LEB128+7, or raw)</c>
      <c>Original ET/Port</c>
      <c>1-2 B</c>
      <c>EtherType, Next Header, or UDP port (if O=1)</c>
      <c>CRC</c>
      <c>2 B</c>
      <c>Integrity check (if I=1)</c>
</texttable>

</section>
</section>
<section anchor="session-id-allocation"><name>Session ID Allocation</name>

<t>The Session ID is locally significant to the link.  Allocation strategies
depend on the deployment topology:</t>

<section anchor="p2p-deployments"><name>P2P Deployments</name>

<t>Session IDs MAY be negotiated between peers during Session establishment,
or assigned by the Domain Manager during provisioning.  Session ID 0 is
a valid Session ID (no reserved values).</t>

</section>
<section anchor="star-topologies"><name>Star Topologies</name>

<t>The Network Gateway assigns Session IDs and communicates them to Devices
during provisioning. The Gateway maintains the Session ID to handler mapping.</t>

</section>
<section anchor="mesh-and-other-topologies"><name>Mesh and Other Topologies</name>

<t>Session IDs MAY be assigned by a Network or Domain Manager, or negotiated
between peers.</t>

</section>
<section anchor="relay-remapping"><name>Relay Remapping</name>

<t>A relay or gateway translating between links MAY remap Session IDs. The
Session ID space is local to each link segment; there is no requirement
for global uniqueness.</t>

</section>
</section>
<section anchor="content-mechanism-identification"><name>Content Mechanism Identification</name>

<t>The CI field provides content mechanism identification. VOICI at the receiver
uses the CI and Session ID values to dispatch the Datagram to the correct 
handler without inspecting the Datagram contents.</t>

<t>This is needed when a link carries Datagrams from multiple mechanisms
simultaneously. Common scenarios include:</t>

<t><list style="symbols">
  <t>A gateway that receives both SCHC-compressed Datagrams and Management and 
diagnostic traffic that bypasses compression entirely.</t>
  <t>Future registrations of additional mechanisms via new CI values.</t>
</list></t>

<section anchor="registration-of-new-mechanisms"><name>Registration of New Mechanisms</name>

<t>Profiles that register a new CI value MUST specify the mechanism and its
parameters. Implementations that encounter a CI value they do not
recognize MUST drop the Datagram.</t>

</section>
</section>
<section anchor="integrity-protection"><name>Integrity Protection</name>

<t>The I flag and CRC field provide optional integrity protection for the
Datagram.</t>

<section anchor="crc-scope"><name>CRC Scope</name>

<t>The CRC covers the VOICI header and the Datagram payload, excluding the
CRC field itself.  Specifically, the CRC is computed over the base header
byte (V-O-I-CI-SSS), the Extended CI LEB128 bytes (if CI=3 and SSS=7),
the Session ID, the Original EtherType/Port field (if O=1), and the
entire Datagram payload.</t>

</section>
<section anchor="crc-algorithm"><name>CRC Algorithm</name>

<t>CRC-16/CCITT-FALSE (polynomial 0x1021, initial value 0xFFFF, no
reflection, no final XOR) is used.  This is the same algorithm used in
many constrained network protocols (for example, Bluetooth, CAN bus).</t>

</section>
<section anchor="relationship-to-ulp-checksums"><name>Relationship to ULP Checksums</name>

<t>Some compression strategies elide Upper Layer Protocol (ULP) checksums
(for example, UDP checksum) to reduce residue size. On links where the
underlying transport does not guarantee datagram integrity, this makes the
VOICI CRC the sole integrity mechanism.  Profiles MUST specify whether
ULP checksum elision is permitted and, if so, whether the VOICI CRC is
mandatory to compensate.</t>

</section>
<section anchor="limitations"><name>Limitations</name>

<t>The CRC provides integrity (corruption detection) but NOT authentication.
An attacker can compute a valid CRC for a forged Datagram. Authentication
must be provided by the underlying transport or a higher-layer security
mechanism.</t>

</section>
</section>
<section anchor="interaction-with-protocol-numbers"><name>Interaction with Protocol Numbers</name>

<t>The protocol numbers defined in <xref target="SCHC-PROTO-NUMS"/> identify VOICI traffic
on the wire.  The VOICI header follows the carrier header and provides
Session multiplexing, Content Mechanism dispatch, and optional integrity
protection.</t>

<figure title="VOICI Layer Stack" anchor="fig-voici-stack"><artwork><![CDATA[
    +------------------+
    |  Payload         |  (content mechanism determined by CI)
    +------------------+
    |  VOICI Header    |  (variable length, 1-7 bytes)
    +------------------+
    |  Carrier Header  |  (Ethertype / IP Protocol / UDP)
    +------------------+
    |  ...             |  (link layer or lower IP)
    +------------------+
]]></artwork></figure>

<t>The CI field identifies the mechanism (CI=0: unprocessed; CI=1: SCHC;
other values: future registrations).</t>

<section anchor="over-ethertype"><name>Over Ethertype</name>

<t>The SCHC Ethertype identifies VOICI-encapsulated traffic.  When O=1,
the Original EtherType/Port field carries the replaced EtherType value.</t>

</section>
<section anchor="over-ip-protocol-number"><name>Over IP Protocol Number</name>

<t>The SCHC IP Protocol Number identifies VOICI-encapsulated traffic.
The VOICI header follows the IPv6 header (or the IPv6 extension
containing the protocol number).  When O=1, the Original
EtherType/Port field carries the replaced IPv6 Next Header value.</t>

</section>
<section anchor="over-udp"><name>Over UDP</name>

<t>The SCHC UDP port identifies VOICI-encapsulated traffic carried in the
UDP payload.  The UDP header provides its own checksum, which may make
the VOICI CRC redundant.  When O=1, the Original EtherType/Port field
carries the replaced UDP destination port number.</t>

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

<section anchor="session-hijacking"><name>Session Hijacking</name>

<t>If Session IDs are predictable, an attacker could inject Datagrams with a
forged Session ID to redirect traffic to a different handler.  Session IDs
SHOULD be randomly generated or derived from a secure key exchange.  In
star topologies where the Domain Manager assigns Session IDs, the assigned
values SHOULD be cryptographically random rather than sequential or
otherwise predictable.</t>

</section>
<section anchor="integrity-limitations"><name>Integrity Limitations</name>

<t>The CRC provides corruption detection but not authentication.  An attacker
with link access can forge Datagrams with valid CRCs.  Authentication must
be provided by the underlying transport (for example, IPsec, TLS) or a
higher-layer mechanism (for example, OSCORE).</t>

</section>
<section anchor="flag-bit-manipulation"><name>Flag Bit Manipulation</name>

<t>When the I flag is set, the CRC covers the flag byte, making flag bit
flipping detectable at the cost of a CRC failure.  When I=0, flipping
the O flag (0 to 1) would cause the receiver to consume payload bytes as
an Original EtherType/Port field.  Higher-layer authentication is
recommended for adversarial environments.</t>

</section>
<section anchor="ci-manipulation"><name>CI Manipulation</name>

<t>When the I flag is set, the CRC covers the CI field, making manipulation
detectable.  When I=0, an attacker can flip the CI field to dispatch the
Datagram to a wrong handler, causing decompression errors or potential
information leakage if the wrong decompressor produces interpretable
output.</t>

</section>
<section anchor="denial-of-service"><name>Denial of Service</name>

<t>An attacker could inject Datagrams with invalid Session IDs, causing the
receiver to waste resources on lookup failures.  Implementations SHOULD
rate-limit Session ID lookup failures.</t>

</section>
<section anchor="replay-attacks"><name>Replay Attacks</name>

<t>VOICI carries no sequence number or timestamp.  An attacker with link access
could replay previously captured Datagrams.  For SCHC&#39;s primary use cases
(sensor telemetry, periodic reporting), replayed Datagrams carry stale
data that is not harmful.  Deployments requiring replay protection SHOULD
use a higher-layer mechanism (for example, OSCORE, DTLS) or the underlying
transport.</t>

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

<section anchor="content-identifier-registry"><name>Content Identifier Registry</name>

<t>This document requests the creation of a &quot;Content Identifier (CI)&quot;
registry.  The initial entries are:</t>

<texttable title="Initial CI registry entries" anchor="tab-iana-ci">
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Content Mechanism</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0</c>
      <c>Unprocessed / raw</c>
      <c>This document</c>
      <c>1</c>
      <c>SCHC <xref target="SCHC"/></c>
      <c><xref target="SCHC"/></c>
      <c>2</c>
      <c>Reserved</c>
      <c>--</c>
      <c>3</c>
      <c>Extended CI</c>
      <c>This document</c>
</texttable>

<t>New CI values are assigned per <xref target="RFC8126"/> &quot;Specification Required&quot;
policy.</t>

</section>
<section anchor="session-id-space"><name>Session ID Space</name>

<t>The Session ID space is locally significant to the link and Content Mechanism.
No IANA assignment is required.</t>

</section>
<section anchor="future-extensions"><name>Future Extensions</name>

<t>The VOICI header allows for future extensions.  New flags or fields would
be introduced through a subsequent revision of this document, with IANA
registry updates.  Existing implementations that encounter unrecognized
flag combinations MUST treat the unrecognized flags as zero and process
the header according to their supported flags.  For the CI field,
implementations that encounter a CI value they do not recognize MUST drop
the Datagram.</t>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

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



<reference anchor="RFC8126">
  <front>
    <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
    <author fullname="M. Cotton" initials="M." surname="Cotton"/>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <author fullname="T. Narten" initials="T." surname="Narten"/>
    <date month="June" year="2017"/>
    <abstract>
      <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
      <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
      <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="26"/>
  <seriesInfo name="RFC" value="8126"/>
  <seriesInfo name="DOI" value="10.17487/RFC8126"/>
</reference>
<reference anchor="SCHC">
  <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="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>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="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>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>



    </references>

    <references title='Informative References' anchor="sec-informative-references">




<reference anchor="SCHC-ARCH">
   <front>
      <title>Static Context Header Compression (SCHC) Architecture</title>
      <author fullname="Alexander Pelov" initials="A." surname="Pelov">
         <organization>IMT Atlantique</organization>
      </author>
      <author fullname="Pascal Thubert" initials="P." surname="Thubert">
         </author>
      <author fullname="Ana Minaburo" initials="A." surname="Minaburo">
         <organization>Consultant</organization>
      </author>
      <date day="17" month="October" year="2025"/>
      <abstract>
	 <t>   This document defines the SCHC architecture.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-schc-architecture-05"/>
   
</reference>

<reference anchor="SCHC-PROTO-NUMS">
   <front>
      <title>Protocol Numbers for SCHC</title>
      <author fullname="Robert Moskowitz" initials="R." surname="Moskowitz">
         <organization>HTT Consulting</organization>
      </author>
      <author fullname="Pascal Thubert" initials="P." surname="Thubert">
         </author>
      <author fullname="Carles Gomez" initials="C." surname="Gomez">
         <organization>UPC</organization>
      </author>
      <author fullname="Ana Minaburo" initials="A." surname="Minaburo">
         <organization>Consultant</organization>
      </author>
      <author fullname="Marc Blanchet" initials="M." surname="Blanchet">
         <organization>Viagenie</organization>
      </author>
      <date day="23" month="December" year="2025"/>
      <abstract>
	 <t>   This document requests an Internet Protocol Number, an Ethertype
   assignment, a CCSDS (Consultative Committee for Space Data Systems)
   Encapsulation Number, and well known ports for SCHC.  The SCHC
   architecture, the SCHC instance establishment, and the SCHC
   compression/decompression processes are simplified when SCHC is
   easily recognised.  Well-known protocol and port numbers are needed.
   The Internet Protocol Number request is so that SCHC can be used for
   IP independent of other transports such as UDP and ESP.  The
   Ethertype and the CCSDS Encapsulation Number are to support generic
   use of native SCHC over any IEEE 802 technology and CCSDS link layer
   technology, respectively, for IP and non-IP protocols.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-schc-protocol-numbers-06"/>
   
</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="DWARF" target="https://dwarfstd.org/documentation/">
  <front>
    <title>DWARF Debugging Information Format</title>
    <author >
      <organization>Dwarf Standards Committee</organization>
    </author>
    <date />
  </front>
  <seriesInfo name="Web" value="https://dwarfstd.org/documentation/"/>
</reference>


    </references>

</references>



  </back>

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

-->

</rfc>

