rfc8724xml2.original.xml   rfc8724.xml 
<?xml version="1.0" encoding="UTF-8"?> <?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.3 -->
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.3 --> <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>
<?rfc symrefs="yes"?> <?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902"
<?rfc strict="yes"?> docName="draft-ietf-lpwan-ipv6-static-context-hc-24"
<?rfc compact="yes"?> number="8724" category="std" obsoletes="" updates=""
<?rfc toc="yes"?> submissionType="IETF" consensus='true' xml:lang="en" symRefs="true"
sortRefs="true" tocInclude="true" version="3" >
<rfc ipr="trust200902" docName="draft-ietf-lpwan-ipv6-static-context-hc-24" cate <!-- xml2rfc v2v3 conversion 2.38.0 -->
gory="std">
<front> <front>
<title abbrev="LPWAN SCHC">Static Context Header Compression (SCHC) and frag mentation for LPWAN, application to UDP/IPv6</title>
<title abbrev="LPWAN SCHC">SCHC: Generic Framework for Static Context Header
Compression and Fragmentation</title>
<seriesInfo name="RFC" value="8724"/>
<author initials="A." surname="Minaburo" fullname="Ana Minaburo"> <author initials="A." surname="Minaburo" fullname="Ana Minaburo">
<organization>Acklio</organization> <organization>Acklio</organization>
<address> <address>
<postal> <postal>
<street>1137A avenue des Champs Blancs</street> <street>1137A avenue des Champs Blancs</street>
<city>35510 Cesson-Sevigne Cedex</city> <city>35510 Cesson-Sevigne Cedex</city>
<country>France</country> <country>France</country>
</postal> </postal>
<email>ana@ackl.io</email> <email>ana@ackl.io</email>
</address> </address>
</author> </author>
<author initials="L." surname="Toutain" fullname="Laurent Toutain"> <author initials="L." surname="Toutain" fullname="Laurent Toutain">
<organization>IMT-Atlantique</organization> <organization>IMT Atlantique</organization>
<address> <address>
<postal> <postal>
<street>2 rue de la Chataigneraie</street> <street>CS 17607</street> <street>2 rue de la Chataigneraie</street>
<street>CS 17607</street>
<city>35576 Cesson-Sevigne Cedex</city> <city>35576 Cesson-Sevigne Cedex</city>
<country>France</country> <country>France</country>
</postal> </postal>
<email>Laurent.Toutain@imt-atlantique.fr</email> <email>Laurent.Toutain@imt-atlantique.fr</email>
</address> </address>
</author> </author>
<author initials="C." surname="Gomez" fullname="Carles Gomez"> <author initials="C." surname="Gomez" fullname="Carles Gomez">
<organization>Universitat Politècnica de Catalunya</organization> <organization>Universitat Politecnica de Catalunya</organization>
<address> <address>
<postal> <postal>
<street>C/Esteve Terradas, 7</street> <street>08860 Castelldefels</str <street>C/Esteve Terradas, 7</street>
eet> <street>08860 Castelldefels</street>
<country>Spain</country> <country>Spain</country>
</postal> </postal>
<email>carlesgo@entel.upc.edu</email> <email>carlesgo@entel.upc.edu</email>
</address> </address>
</author> </author>
<author initials="D." surname="Barthel" fullname="Dominique Barthel"> <author initials="D." surname="Barthel" fullname="Dominique Barthel">
<organization>Orange Labs</organization> <organization>Orange Labs</organization>
<address> <address>
<postal> <postal>
<street>28 chemin du Vieux Chêne</street> <street>38243 Meylan</street <street>28 chemin du Vieux Chene</street>
> <street>38243 Meylan</street>
<country>France</country> <country>France</country>
</postal> </postal>
<email>dominique.barthel@orange.com</email> <email>dominique.barthel@orange.com</email>
</address> </address>
</author> </author>
<author initials="JC." surname="Zuniga" fullname="Juan Carlos Zuniga"> <author initials="JC." surname="Zuniga" fullname="Juan Carlos Zuniga">
<organization>SIGFOX</organization> <organization>SIGFOX</organization>
<address> <address>
<postal> <postal>
<street>425 rue Jean Rostand</street> <street>Labege 31670</street> <street>425 rue Jean Rostand</street>
<street>31670 Labege</street>
<country>France</country> <country>France</country>
</postal> </postal>
<email>JuanCarlos.Zuniga@sigfox.com</email> <email>JuanCarlos.Zuniga@sigfox.com</email>
</address> </address>
</author> </author>
<date year="2020" month="April"/>
<date year="2019" month="December" day="05"/>
<workgroup>lpwan Working Group</workgroup> <workgroup>lpwan Working Group</workgroup>
<abstract> <keyword>header compression</keyword>
<keyword>compression</keyword>
<t>This document defines the Static Context Header Compression (SCHC) framework, <keyword>fragmentation</keyword>
which provides both a header compression mechanism and an optional fragmentatio <keyword>static context</keyword>
n mechanism. SCHC has been designed for Low Power Wide Area Networks (LPWAN).</t <keyword>rule-based</keyword>
> <keyword>LPWAN</keyword>
<keyword>LPWANs</keyword>
<t>SCHC compression is based on a common static context stored both in the LPWAN <keyword>low power</keyword>
device and in the network infrastructure side. This document defines a generic <keyword>low-power</keyword>
header compression mechanism and its application to compress IPv6/UDP headers.</ <keyword>6LoWPAN</keyword>
t> <keyword>6lo</keyword>
<keyword>LoWPAN</keyword>
<keyword>LoWPANs</keyword>
<keyword>LLN</keyword>
<keyword>LLNs</keyword>
<keyword>LTN</keyword>
<keyword>LTE</keyword>
<keyword>LTE-M</keyword>
<keyword>Sigfox</keyword>
<keyword>LoRaWAN</keyword>
<keyword>NB-IOT</keyword>
<keyword>5G</keyword>
<keyword>IoT</keyword>
<keyword>Internet of Things</keyword>
<keyword>adaptation layer</keyword>
<keyword>UDP</keyword>
<keyword>IPv6</keyword>
<keyword>WSN</keyword>
<keyword>sensor network</keyword>
<keyword>wireless sensor network</keyword>
<keyword>802.15.4</keyword>
<keyword>constrained network</keyword>
<keyword>constrained node</keyword>
<keyword>constrained-node network</keyword>
<t>This document also specifies an optional fragmentation and reassembly mechani <abstract>
sm. It can be used to support the IPv6 MTU requirement over the LPWAN technologi <t>This document defines the Static Context Header Compression
es. Fragmentation is needed for IPv6 datagrams that, after SCHC compression or w and fragmentation (SCHC) framework, which provides both a header compressi
hen such compression was not possible, still exceed the layer-2 maximum payload on
size.</t> mechanism and an optional fragmentation mechanism. SCHC has been
designed with Low-Power Wide Area Networks (LPWANs) in mind.</t>
<t>The SCHC header compression and fragmentation mechanisms are independent of t <t>SCHC compression is based on a common static context stored both in the
he specific LPWAN technology over which they are used. This document defines gen LPWAN device and in the network infrastructure side. This document defines a ge
eric functionalities and offers flexibility with regard to parameter settings an neric header compression mechanism and its application to compress IPv6/UDP head
d mechanism choices. ers.</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 siz
e.</t>
<t>The SCHC header compression and fragmentation mechanisms are independen
t of the specific LPWAN technology over which they are used. This document defin
es generic functionalities and offers flexibility with regard to parameter setti
ngs and mechanism choices.
This document standardizes the exchange over the LPWAN between two SCHC entities . 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 gr ouped into profiles, which are specified in other documents. Settings and choices specific to a technology or a product are expected to be gr ouped into profiles, which are specified in other documents.
Data models for the context and profiles are out of scope.</t> Data models for the context and profiles are out of scope.</t>
</abstract> </abstract>
</front> </front>
<middle> <middle>
<section anchor="Introduction" numbered="true" toc="default">
<section anchor="Introduction" title="Introduction"> <name>Introduction</name>
<t>This document defines the Static Context Header Compression and fragmen
<t>This document defines the Static Context Header Compression (SCHC) framework, tation (SCHC) framework, which provides both a header compression mechanism and
which provides both a header compression mechanism and an optional fragmentatio an optional fragmentation mechanism. SCHC has been designed with Low-Power Wide
n mechanism. SCHC has been designed for Low Power Wide Area Networks (LPWAN).</t Area Networks (LPWANs) in mind.</t>
> <t>LPWAN technologies impose some strict limitations on traffic. For insta
nce, devices sleep most of the time and may only receive data during short perio
<t>LPWAN technologies impose some strict limitations on traffic. For instance, d ds of time after transmission, in order to preserve battery.
evices sleep most of the time and may only receive data during short periods of LPWAN technologies are also characterized by a greatly reduced data unit and/or
time after transmission, in order to preserve battery. payload size (see <xref target="RFC8376" format="default"/>).</t>
LPWAN technologies are also characterized by a greatly reduced data unit and/or <t>Header compression is needed for efficient Internet connectivity to a n
payload size (see <xref target="RFC8376"/>).</t> ode within an LPWAN. The following properties of LPWANs can be exploited to get
an efficient header compression:</t>
<t>Header compression is needed for efficient Internet connectivity to a node wi <ul spacing="normal">
thin an LPWAN network. The following properties of LPWAN networks can be exploit <li>The network topology is star-oriented, which means that all packets
ed to get an efficient header compression:</t> between the same source-destination pair follow the same path. For the needs of
this document, the architecture can simply be described as Devices (Dev) exchang
<t><list style="symbols"> ing information with LPWAN Application Servers (Apps) through a Network Gateway
<t>The network topology is star-oriented, which means that all packets between (NGW).</li>
the same source-destination pair follow the same path. For the needs of this do <li>Because devices embed built-in applications, the traffic flows to be
cument, the architecture can simply be described as Devices (Dev) exchanging inf compressed are known in advance. Indeed, new applications are less frequently i
ormation with LPWAN Application Servers (App) through a Network Gateway (NGW).</ nstalled in an LPWAN device than they are in a general-purpose computer or smart
t> phone.</li>
<t>Because devices embed built-in applications, the traffic flows to be compre </ul>
ssed are known in advance. Indeed, new applications are less frequently installe <t>SCHC compression uses a Context (a set of Rules) in which information a
d in an LPWAN device, than they are in a general-purpose computer or smartphone. bout header fields is stored. This Context is static: the values of the header f
</t> ields and the actions to do compression/decompression do not change over time. T
</list></t> his avoids the need for complex resynchronization mechanisms.
Indeed, a return path may be more restricted/expensive, or may
<t>SCHC compression uses a Context (a set of Rules) in which information about h sometimes be completely unavailable <xref target="RFC8376" format="default"/>.
eader fields is stored. This Context is static: the values of the header fields
and the actions to do compression/decompression do not change over time. This av
oids the need for complex resynchronization mechanisms.
Indeed, a return path may be more restricted/expensive, sometimes completely una
vailable <xref target="RFC8376"/>.
A compression protocol that relies on feedback is not compatible with the charac teristics of such LPWANs.</t> A compression protocol that relies on feedback is not compatible with the charac teristics of such LPWANs.</t>
<t>In most cases, a small Rule identifier is enough to represent the full
<t>In most cases, a small Rule identifier is enough to represent the full IPv6/U IPv6/UDP headers. The SCHC header compression mechanism is independent of the sp
DP headers. The SCHC header compression mechanism is independent of the specific ecific LPWAN technology over which it is used.</t>
LPWAN technology over which it is used.</t> <t>Furthermore, some LPWAN technologies do not provide a fragmentation fun
ctionality; to support the IPv6 MTU requirement of 1280 bytes <xref target="RFC8
<t>Furthermore, some LPWAN technologies do not provide a fragmentation functiona 200" format="default"/>, they require a fragmentation protocol at the adaptation
lity; to support the IPv6 MTU requirement of 1280 bytes <xref target="RFC8200"/> layer below IPv6.
, they require a fragmentation protocol at the adaptation layer below IPv6. Accordingly, this document defines an optional fragmentation/reassembly mechanis
Accordingly, this document defines an optional fragmentation/reassembly mechanis m to help LPWAN technologies support the IPv6 MTU requirement.</t>
m for LPWAN technologies to support the IPv6 MTU requirement.</t> <t>This document defines generic functionality and offers flexibility with
regard to parameter settings
<t>This document defines generic functionality and offers flexibility with regar
d to parameters settings
and mechanism choices. Technology-specific settings are expected to be grouped i nto Profiles specified in other documents.</t> and mechanism choices. Technology-specific settings are expected to be grouped i nto Profiles specified in other documents.</t>
</section>
</section> <section anchor="requirements-notation" numbered="true" toc="default">
<section anchor="requirements-notation" title="Requirements Notation"> <name>Requirements Notation</name>
<t>
<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU
“SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
“OPTIONAL” in this document are to be interpreted as described in BCP 14 NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appe RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
ar in all capitals, "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to
as shown here.</t> be interpreted as
described in BCP&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/>
</section> when, and only when, they appear in all capitals, as shown here.
<section anchor="LPWAN-Archi" title="LPWAN Architecture"> </t>
</section>
<t>LPWAN network architectures are similar among them, but each LPWAN technology <section anchor="LPWAN-Archi" numbered="true" toc="default">
names architecture elements differently. <name>LPWAN Architecture</name>
In this document, we use terminology from <xref target="RFC8376"/>, <t>LPWAN architectures are similar among them, but each LPWAN technology n
which identifies the following entities in a typical LPWAN network (see <xref ta ames architecture elements differently.
rget="Fig-LPWANarchi"/>):</t> In this document, we use terminology from <xref target="RFC8376" format="default
"/>,
<t>o Devices (Dev) are the end-devices or hosts (e.g., sensors, actuators, etc. which identifies the following entities in a typical LPWAN
). There can be a very high density of devices per radio gateway.</t> (see <xref target="Fig-LPWANarchi" format="default"/>):</t>
<t>o The Radio Gateway (RGW) is the end point of the constrained link.</t>
<t>o The Network Gateway (NGW) is the interconnection node between the Radio Ga
teway and the Internet.</t>
<t>o Application Server (App) is the end point of the application level protoco
l on the Internet side.</t>
<figure title="LPWAN Architecture, simplified from that shown in RFC8376" anchor <ul spacing="normal">
="Fig-LPWANarchi"><artwork><![CDATA[ <li>Devices (Dev) are the end-devices or hosts (e.g., sensors, actuators,
etc.). There can be a very high density of devices per Radio Gateway.</li>
<li>The Radio Gateway (RGW) is the endpoint of the constrained link.</li>
<li>The Network Gateway (NGW) is the interconnection node between the Radi
o Gateway and the Internet.</li>
<li>The Application Server (App) is the endpoint of the application-level
protocol on the Internet side.</li></ul>
<figure anchor="Fig-LPWANarchi">
<name>LPWAN Architecture (Simplified from That Shown in RFC 8376)</name>
<artwork name="" type="" align="left" alt=""><![CDATA[
() () () | () () () |
() () () () / \ +---------+ () () () () / \ +---------+
() () () () () () / \======| ^ | +-----------+ () () () () () () / \======| ^ | +-----------+
() () () | | <--|--> | |Application| () () () | | <--|--> | |Application|
() () () () / \==========| v |=============| (App) | () () () () / \==========| v |=============| Server |
() () () / \ +---------+ +-----------+ () () () / \ +---------+ +-----------+
Dev RGWs NGW Dev RGWs NGW App]]></artwork>
</figure>
]]></artwork></figure> </section>
<section anchor="Term" numbered="true" toc="default">
</section> <name>Terminology</name>
<section anchor="Term" title="Terminology"> <t>This section defines terminology and abbreviations used in this documen
<t>This section defines the terminology and acronyms used in this document. t.
It extends the terminology of <xref target="RFC8376"/>.</t> It extends the terminology of <xref target="RFC8376" format="default"/>.</t>
<t>The SCHC acronym is pronounced like "sheek" in English (or "chic" in Fr
<t>The SCHC acronym is pronounced like “sheek” in English (or “chic” in French). ench). Therefore, this document writes "a SCHC Packet" instead of "an SCHC Packe
Therefore, this document writes “a SCHC Packet” instead of “an SCHC Packet”.</t t".</t>
> <dl spacing="normal" indent="9">
<t><list style="symbols"> <dt>App:</dt><dd>LPWAN Application Server, as defined by <xref target="R
<t>App: LPWAN Application, as defined by <xref target="RFC8376"/>. An applicat FC8376" format="default"/>. It runs an application sending/receiving packets to/
ion sending/receiving packets to/from the Dev.</t> from the Dev.</dd>
<t>AppIID: Application Interface Identifier. The IID that identifies the appli <dt>AppIID:</dt><dd>Application Interface Identifier. The IID that
cation server interface.</t> identifies the App interface.</dd>
<t>Bi: Bidirectional. Characterizes a Field Descriptor that applies to headers <dt>Compression Residue:</dt><dd>The bits that remain to be sent (beyond
of packets traveling in either direction (Up and Dw, see this glossary).</t> the RuleID itself) after applying the SCHC compression.</dd>
<t>CDA: Compression/Decompression Action. Describes the pair of actions that a <dt>Context:</dt><dd>A set of Rules used to compress/decompress headers,
re performed at the compressor to compress a header field and at the decompresso or to fragment/reassemble a packet.</dd>
r to recover the original value of the header field.</t> <dt>Dev:</dt><dd>Device, as defined by <xref target="RFC8376" format="de
<t>Compression Residue. The bits that remain to be sent (beyond the Rule ID it fault"/>.</dd>
self) after applying the SCHC compression.</t> <dt>DevIID:</dt><dd>Device Interface Identifier. The IID that identifies
<t>Context: A set of Rules used to compress/decompress headers.</t> the Dev interface.</dd>
<t>Dev: Device, as defined by <xref target="RFC8376"/>.</t> <dt>Downlink:</dt><dd>From the App to the Dev.</dd>
<t>DevIID: Device Interface Identifier. The IID that identifies the Dev interf <dt>IID:</dt><dd>Interface Identifier. See the IPv6 addressing architect
ace.</t> ure <xref target="RFC7136" format="default"/>.</dd>
<t>DI: Direction Indicator. This field tells which direction of packet travel <dt>L2:</dt><dd>Layer 2. The immediate lower layer that SCHC interfaces
(Up, Dw or Bi) a Field Description applies to. This allows for asymmetric proces with, for example an underlying LPWAN technology. It does not necessarily corres
sing, using the same Rule.</t> pond to the OSI model definition of Layer 2.</dd>
<t>Dw: Downlink direction for compression/decompression, from SCHC C/D in the <dt>L2 Word:</dt><dd>This is the minimum subdivision of payload data tha
network to SCHC C/D in the Dev.</t> t the L2 will carry. In most L2 technologies, the L2 Word is an octet.
<t>Field Description. A tuple containing identifier, value, matching operator
and actions to be applied to a field.</t>
<t>FID: Field Identifier. This identifies the protocol and field a Field Descr
iption applies to.</t>
<t>FL: Field Length is the length of the original packet header field. It is e
xpressed as a number of bits for header fields of fixed lengths or as a type (e.
g., variable, token length, …) for field lengths that are unknown at the time of
Rule creation. The length of a header field is defined in the corresponding pro
tocol specification (such as IPv6 or UDP).</t>
<t>FP: when a Field is expected to appear multiple times in a header, Field Po
sition specifies the occurrence this Field Description applies to
(for example, first uri-path option, second uri-path, etc. in a CoAP header), co
unting from 1. The value 0 is special and means “don’t care”, see <xref target="
PProcessing"/>.</t>
<t>IID: Interface Identifier. See the IPv6 addressing architecture <xref targe
t="RFC7136"/>.</t>
<t>L2: Layer two. The immediate lower layer SCHC interfaces with. It is provid
ed by an underlying LPWAN technology. It does not necessarily correspond to the
OSI model definition of Layer 2.</t>
<t>L2 Word: this is the minimum subdivision of payload data that the L2 will c
arry. In most L2 technologies, the L2 Word is an octet.
In bit-oriented radio technologies, the L2 Word might be a single bit. In bit-oriented radio technologies, the L2 Word might be a single bit.
The L2 Word size is assumed to be constant over time for each device.</t> The L2 Word size is assumed to be constant over time for each device.</dd>
<t>MO: Matching Operator. An operator used to match a value contained in a hea
der field with a value contained in a Rule.</t> <dt>Padding:</dt><dd>Extra bits that may be appended by SCHC to a data u
<t>Padding (P). Extra bits that may be appended by SCHC to a data unit that it nit that it passes down to L2 for transmission.
passes to the underlying Layer 2 for transmission. SCHC itself operates on bits, not bytes, and does not have any alignment prerequ
SCHC itself operates on bits, not bytes, and does not have any alignment prerequ isite. See <xref target="Padding" format="default"/>.</dd>
isite. See <xref target="Padding"/>.</t> <dt>Profile:</dt><dd>SCHC offers variations in the way it is operated, w
<t>Profile: SCHC offers variations in the way it is operated, with a number of ith a number of parameters listed in <xref target="SCHCParams" format="default"/
parameters listed in <xref target="SCHCParams"/>. >.
A Profile indicates a particular setting of all these parameters. A Profile indicates a particular setting of all these parameters.
Both ends of a SCHC communication must be provisioned with the same Profile info rmation and with the same set of Rules before the communication starts, Both ends of a SCHC communication must be provisioned with the same Profile info rmation and with the same set of Rules before the communication starts,
so that there is no ambiguity in how they expect to communicate.</t> so that there is no ambiguity in how they expect to communicate.</dd>
<t>Rule: A set of Field Descriptions.</t> <dt>Rule:</dt><dd>Part of the Context that describes how a packet is com
<t>Rule ID (Rule Identifier): An identifier for a Rule. SCHC C/D on both sides pressed/decompressed or fragmented/reassembled.</dd>
share the same Rule ID for a given packet. A set of Rule IDs are used to suppor <dt>RuleID:</dt><dd>Rule Identifier. An identifier for a Rule.</dd>
t SCHC F/R functionality.</t> <dt>SCHC:</dt><dd>Static Context Header Compression and fragmentation (S
<t>SCHC C/D: SCHC Compressor/Decompressor. A mechanism used on both sides, at CHC), a generic framework.</dd>
the Dev and at the network, to achieve Compression/Decompression of headers.</t> <dt>SCHC C/D:</dt><dd>SCHC Compressor/Decompressor, or SCHC Compression/
<t>SCHC F/R: SCHC Fragmentation / Reassembly. A mechanism used on both sides, Decompression. The SCHC entity or mechanism used on both sides, at the Dev and a
at the Dev and at the network, to achieve Fragmentation / Reassembly of SCHC Pac t the network, to achieve compression/decompression of headers.</dd>
kets.</t> <dt>SCHC F/R:</dt><dd>SCHC Fragmenter/Reassembler or SCHC Fragmentation/
<t>SCHC Packet: A packet (e.g., an IPv6 packet) whose header has been compress Reassembly. The SCHC entity or mechanism used on both sides, at the Dev and at t
ed as per the header compression mechanism defined in this document. If the head he network, to achieve fragmentation/reassembly of SCHC Packets.</dd>
er compression process is unable to actually compress the packet header, the pac <dt>SCHC Packet:</dt><dd>A packet (e.g., an IPv6 packet) whose header ha
ket with the uncompressed header is still called a SCHC Packet (in this case, a s been compressed as per the header compression mechanism defined in this docume
Rule ID is used to indicate that the packet header has not been compressed). See nt. If the header compression process is unable to actually compress the packet
<xref target="SCHComp"/> for more details.</t> header, the packet with the uncompressed header is still called a SCHC Packet (i
<t>TV: Target value. A value contained in a Rule that will be matched with the n this case, a RuleID is used to indicate that the packet header has not been co
value of a header field.</t> mpressed). See <xref target="SCHComp" format="default"/> for more details.</dd>
<t>Up: Uplink direction for compression/decompression, from the Dev SCHC C/D t <dt>Uplink:</dt><dd>From the Dev to the App.</dd>
o the network SCHC C/D.</t> </dl>
</list></t> <t>Additional terminology for the optional SCHC F/R is found in <xref targ
et="FragTools" format="default"/>.</t>
<t>Additional terminology for the optional SCHC Fragmentation / Reassembly mecha <t>Additional terminology for SCHC C/D is found in <xref target="schc-cd-r
nism (SCHC F/R) is found in <xref target="FragTools"/>.</t> ules" format="default"/>.</t>
</section>
</section> <section anchor="Overview" numbered="true" toc="default">
<section anchor="Overview" title="SCHC overview"> <name>SCHC Overview</name>
<t>SCHC can be characterized as an adaptation layer between an upper layer
<t>SCHC can be characterized as an adaptation layer between an upper layer (typi (for example, IPv6) and an underlying layer (for example, an LPWAN technology).
cally, IPv6) and an underlying layer (typically, an LPWAN technology). SCHC comprises two sublayers (i.e., the Compression sublayer and the Fragmentati
SCHC comprises two sublayers (i.e. the Compression sublayer and the Fragmentatio on sublayer), as shown in <xref target="Fig-IntroLayers" format="default"/>.</t>
n sublayer), as shown in <xref target="Fig-IntroLayers"/>.</t> <figure anchor="Fig-IntroLayers">
<name>Example of Protocol Stack Comprising IPv6, SCHC, and an LPWAN Tech
<figure title="Protocol stack comprising IPv6, SCHC and an LPWAN technology" anc nology</name>
hor="Fig-IntroLayers"><artwork><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
+----------------+ +----------------+
| IPv6 | | IPv6 |
+- +----------------+ +- +----------------+
| | Compression | | | Compression |
SCHC < +----------------+ SCHC < +----------------+
| | Fragmentation | | | Fragmentation |
+- +----------------+ +- +----------------+
|LPWAN technology| |LPWAN technology|
+----------------+ +----------------+]]></artwork>
</figure>
]]></artwork></figure> <t>Before an upper layer packet (e.g., an IPv6 packet) is transmitted to t
he underlying layer, header compression is first attempted. The resulting packet
<t>Before an upper layer packet (e.g., an IPv6 packet) is transmitted to the und is called a "SCHC Packet", whether or not any compression is performed.
erlying layer, header compression is first attempted. The resulting packet is ca If needed by the underlying layer, the optional SCHC fragmentation <bcp14>MAY</b
lled a SCHC Packet, whether or not any compression is performed. cp14> be applied to the SCHC Packet.
If needed by the underlying layer, the optional SCHC Fragmentation MAY be applie The inverse operations take place at the receiver. This process is illustrated i
d to the SCHC Packet. n <xref target="Fig-Operations" format="default"/>.</t>
The inverse operations take place at the receiver. This process is illustrated i <figure anchor="Fig-Operations">
n <xref target="Fig-Operations"/>.</t> <name>SCHC Operations at the Sender and the Receiver</name>
<artwork name="" type="" align="left" alt=""><![CDATA[
<figure title="SCHC operations at the Sender and the Receiver" anchor="Fig-Opera
tions"><artwork><![CDATA[
A packet (e.g., an IPv6 packet) A packet (e.g., an IPv6 packet)
| ^ | ^
v | v |
+------------------+ +--------------------+ +------------------+ +--------------------+
| SCHC Compression | | SCHC Decompression | | SCHC Compression | | SCHC Decompression |
+------------------+ +--------------------+ +------------------+ +--------------------+
| ^ | ^
| If no fragmentation (*) | | If no fragmentation (*) |
+-------------- SCHC Packet -------------->| +-------------- SCHC Packet -------------->|
| | | |
skipping to change at line 248 skipping to change at line 266
| SCHC Fragmentation | | SCHC Reassembly | | SCHC Fragmentation | | SCHC Reassembly |
+--------------------+ +-----------------+ +--------------------+ +-----------------+
| ^ | ^ | ^ | ^
| | | | | | | |
| +---------- SCHC ACK (+) -------------+ | | +---------- SCHC ACK (+) -------------+ |
| | | |
+-------------- SCHC Fragments -------------------+ +-------------- SCHC Fragments -------------------+
Sender Receiver Sender Receiver
*: the decision to not use SCHC Fragmentation is left to each Profile. *: the decision not to use SCHC fragmentation is left to each Profile
+: optional, depends on Fragmentation mode. +: optional, depends on Fragmentation mode]]></artwork>
</figure>
]]></artwork></figure> <section anchor="schc-packet-format" numbered="true" toc="default">
<name>SCHC Packet Format</name>
<section anchor="schc-packet-format" title="SCHC Packet format"> <t>The SCHC Packet is composed of the Compressed Header followed by the
payload from the original packet (see <xref target="Fig-SCHCpckt" format="defaul
<t>The SCHC Packet is composed of the Compressed Header followed by the payload t"/>).
from the original packet (see <xref target="Fig-SCHCpckt"/>). The Compressed Header itself is composed of the RuleID and a Compression Residue
The Compressed Header itself is composed of the Rule ID and a Compression Residu , which is the output of compressing the packet header with the Rule identified
e, which is the output of compressing the packet header with that Rule (see <xre by that RuleID (see <xref target="SCHComp" format="default"/>).
f target="SCHComp"/>). The Compression Residue may be empty. Both the RuleID and the Compression Residu
The Compression Residue may be empty. Both the Rule ID and the Compression Resid e potentially have a variable size, and are not necessarily a multiple of bytes
ue potentially have a variable size, and are not necessarily a multiple of bytes in size.</t>
in size.</t> <figure anchor="Fig-SCHCpckt">
<name>SCHC Packet</name>
<figure title="SCHC Packet" anchor="Fig-SCHCpckt"><artwork><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
|------- Compressed Header -------| |------- Compressed Header -------|
+---------------------------------+--------------------+ +---------------------------------+--------------------+
| Rule ID | Compression Residue | Payload | | RuleID | Compression Residue | Payload |
+---------------------------------+--------------------+ +---------------------------------+--------------------+]]></artwork>
</figure>
]]></artwork></figure> </section>
<section anchor="FunctionalMapping" numbered="true" toc="default">
</section> <name>Functional Mapping</name>
<section anchor="FunctionalMapping" title="Functional mapping"> <t><xref target="Fig-archi" format="default"/> maps the
functional elements of <xref target="Fig-Operations"
<t><xref target="Fig-archi"/> maps the functional elements of <xref target="Fig- format="default"/> onto the LPWAN architecture elements of
Operations"/> onto the LPWAN architecture elements of <xref target="Fig-LPWANarc <xref target="Fig-LPWANarchi" format="default"/>.</t>
hi"/>.</t>
<figure title="Architecture" anchor="Fig-archi"><artwork><![CDATA[ <figure anchor="Fig-archi">
<name>Architectural Mapping</name>
<artwork name="" type="" align="left" alt=""><![CDATA[
Dev App Dev App
+----------------+ +----+ +----+ +----+ +----------------+ +----+ +----+ +----+
| App1 App2 App3 | |App1| |App2| |App3| | App1 App2 App3 | |App1| |App2| |App3|
| | | | | | | | | | | | | | | |
| UDP | |UDP | |UDP | |UDP | | UDP | |UDP | |UDP | |UDP |
| IPv6 | |IPv6| |IPv6| |IPv6| | IPv6 | |IPv6| |IPv6| |IPv6|
| | | | | | | | | | | | | | | |
|SCHC C/D and F/R| | | | | | | |SCHC C/D and F/R| | | | | | |
+--------+-------+ +----+ +----+ +----+ +--------+-------+ +----+ +----+ +----+
| +---+ +---+ +----+ +----+ . . . | +---+ +---+ +----+ +----+ . . .
+~ |RGW| === |NGW| == |SCHC| == |SCHC|...... Internet .... +~ |RGW| === |NGW| == |SCHC| == |SCHC|..... Internet ....
+---+ +---+ |F/R | |C/D | +---+ +---+ |F/R | |C/D |
+----+ +----+ +----+ +----+]]></artwork>
]]></artwork></figure> </figure>
<t>SCHC C/D and SCHC F/R are located on both sides of the LPWAN transmis
<t>SCHC C/D and SCHC F/R are located on both sides of the LPWAN transmission, he sion, hereafter called the "Dev side" and the "Network Infrastructure side".</t>
reafter called “the Dev side” and “the Network infrastructure side”.</t> <t>The operation in the Uplink direction is as follows. The Device appli
cation uses IPv6 or IPv6/UDP protocols. Before sending the packets, the Dev comp
<t>The operation in the Uplink direction is as follows. The Device application u resses their headers using SCHC C/D;
ses IPv6 or IPv6/UDP protocols. Before sending the packets, the Dev compresses t if the SCHC Packet resulting from the compression needs to be fragmented by SCHC
heir headers using SCHC C/D and, , SCHC F/R is performed (see <xref target="Frag" format="default"/>).
if the SCHC Packet resulting from the compression needs to be fragmented by SCHC The resulting SCHC Fragments are sent to an LPWAN Radio Gateway (RGW), which for
, SCHC F/R is performed (see <xref target="Frag"/>). wards them to a Network Gateway (NGW).
The resulting SCHC Fragments are sent to an LPWAN Radio Gateway (RGW) which forw The NGW sends the data to a SCHC F/R for reassembly (if needed) and then to the
ards them to a Network Gateway (NGW). SCHC C/D for decompression.
The NGW sends the data to a SCHC F/R for re-assembly (if needed) and then to the
SCHC C/D for decompression.
After decompression, the packet can be sent over the Internet After decompression, the packet can be sent over the Internet
to one or several LPWAN Application Servers (App).</t> to one or several Apps.</t>
<t>The SCHC F/R and SCHC C/D on the Network Infrastructure side can
be part of the NGW or located in the Internet as long as a
tunnel is established between them and the NGW.
<t>The SCHC F/R and C/D on the Network infrastructure side can be part of the NG W, or located in the Internet as long as a tunnel is established between them an d the NGW.
For some LPWAN technologies, it may be suitable to locate the SCHC F/R For some LPWAN technologies, it may be suitable to locate the SCHC F/R
functionality nearer the NGW, in order to better deal with time constraints of s uch technologies.</t> functionality nearer the NGW, in order to better deal with time constraints of s uch technologies.</t>
<t>The SCHC C/Ds on both sides <bcp14>MUST</bcp14> share the same set of
<t>The SCHC C/Ds on both sides MUST share the same set of Rules. Rules.
So MUST the SCHC F/Rs on both sides.</t> So <bcp14>MUST</bcp14> the SCHC F/Rs on both sides.</t>
<t>The operation in the Downlink direction is similar to that in the Upl
<t>The operation in the Downlink direction is similar to that in the Uplink dire ink direction, only reversing the order in which the architecture elements are t
ction, only reversing the order in which the architecture elements are traversed raversed.</t>
.</t> </section>
</section>
</section> <section anchor="RuleID" numbered="true" toc="default">
</section> <name>RuleID</name>
<section anchor="RuleID" title="Rule ID"> <t>RuleIDs identify the Rules used for compression/decompression or
for fragmentation/reassembly.</t>
<t>Rule IDs identify the Rules used for Compression/Decompression or <t>The scope of the RuleID of a compression/decompression Rule is the link
for Fragmentation/Reassembly.</t> between the SCHC C/D in a given Dev and the corresponding SCHC C/D in the Netwo
rk Infrastructure side.
<t>The scope of the Rule ID of a Compression/Decompression Rule is the link betw The scope of the RuleID of a fragmentation/reassembly Rule is the link between t
een the SCHC C/D in a given Dev and the corresponding SCHC C/D in the Network in he SCHC F/R in a given Dev and the corresponding SCHC F/R in the Network Infrast
frastructure side. ructure side.
The scope of the Rule ID of a Fragmentation/Reassembly Rule is the link between
the SCHC F/R in a given Dev and the corresponding SCHC F/R in the Network infras
tructure side.
If such a link is bidirectional, the scope includes both directions.</t> If such a link is bidirectional, the scope includes both directions.</t>
<t>The RuleIDs are therefore specific to the Context related to one Dev. H
<t>Inside their scopes, Rules for Compression/Decompression and Rules for Fragme ence, multiple Dev instances, which refer to different Contexts, <bcp14>MAY</bcp
ntation/Reassembly share the same Rule ID space.</t> 14> reuse the same RuleID for different Rules.
On the Network Infrastructure side, in order to identify the correct Rule
<t>The size of the Rule IDs is not specified in this document, as it is implemen to be applied to Uplink traffic, the SCHC C/D or SCHC F/R needs to associate the
tation-specific and can vary according to the LPWAN technology and the number of RuleID with the Dev identifier.
Rules, among others. It is defined in Profiles.</t> Similarly, for Downlink traffic, the SCHC C/D or SCHC F/R on the Network I
nfrastructure side first needs to identify the destination Dev before looking fo
<t>The Rule IDs are used:</t> r the appropriate Rule (and associated RuleID) in the Context of that Dev.</t>
<t>Inside their scopes, Rules for compression/decompression and Rules for
<t><list style="symbols"> fragmentation/reassembly share the same RuleID space.</t>
<t>For SCHC C/D, to identify the Rule (i.e., the set of Field Descriptions) th <t>The size of the RuleIDs is not specified in this document,
at is used to compress a packet header. <list style="symbols"> as it is implementation-specific and can vary according to the
<t>At least one Rule ID MUST be allocated to tagging packets for which SCH LPWAN technology and the number of Rules, among other things. It is define
C compression was not possible (i.e., no matching compression Rule was found).</ d in Profiles.</t>
t> <t>The RuleIDs are used:</t>
</list></t> <ul spacing="normal">
<t>In SCHC F/R, to identify the specific mode and settings of F/R for one dire <li>
ction of traffic (Up or Dw). <list style="symbols"> <t>For SCHC C/D, to identify the Rule that is used to compress a packe
<t>When F/R is used for both communication directions, at least two Rule I t header. </t>
D values are needed for F/R, one per direction of traffic. <ul spacing="normal">
This is because F/R may entail control messages flowing in the reverse direction <li>At least one RuleID <bcp14>MUST</bcp14> be allocated to tagging
compared to data traffic.</t> packets for which SCHC compression was not possible (i.e., no matching compressi
</list></t> on Rule was found).</li>
</list></t> </ul>
</li>
</section> <li>
<section anchor="SCHComp" title="Compression/Decompression"> <t>In SCHC F/R, to identify the specific mode and settings of fragment
ation/reassembly for one direction of data traffic (Uplink or Downlink). </t>
<t>Compression with SCHC <ul spacing="normal">
is based on using a set of Rules, called the Context, to compress or decompress <li>When SCHC F/R is used for both communication directions, at leas
headers. SCHC avoids Context synchronization traffic, which consumes considerabl t two RuleID values are needed for fragmentation/reassembly: one per direction o
e bandwidth in other header compression mechanisms such as RoHC <xref target="RF f data traffic.
C5795"/>. Since the content of packets is highly predictable in LPWAN networks, This is because fragmentation/reassembly may entail control messages flowing in
static Contexts can be stored beforehand. The Contexts MUST be stored at both en the reverse direction compared to data traffic.</li>
ds, and they can be learned by a provisioning protocol or by out of band means, </ul>
or they can be pre-provisioned. The way the Contexts are provisioned is out of t </li>
he scope of this document.</t> </ul>
</section>
<section anchor="schc-cd-rules" title="SCHC C/D Rules"> <section anchor="SCHComp" numbered="true" toc="default">
<name>Compression/Decompression</name>
<t>The main idea of the SCHC compression scheme is to transmit the Rule ID to th <t>Compression with SCHC
e other end instead of sending known field values. This Rule ID identifies a Rul is based on using a set of Rules, which constitutes the Context of SCHC C/D, to
e that matches the original packet values. Hence, when a value is known by both compress or
ends, it is only necessary to send the corresponding Rule ID over the LPWAN netw decompress headers. SCHC avoids Context synchronization traffic,
ork. which consumes considerable bandwidth in other header
The manner by which Rules are generated is out of the scope of this document. Th compression mechanisms such as RObust Header Compression (RoHC)
e Rules MAY be changed at run-time but the mechanism is out of scope of this doc <xref target="RFC5795" format="default"/>. Since the content of
ument.</t> packets is highly predictable in LPWANs, static Contexts
can be stored beforehand. The Contexts <bcp14>MUST</bcp14> be
<t>The Context is a set of Rules. stored at both ends, and they can be learned by a provisioning
See <xref target="Fig-ctxt"/> for a high level, abstract representation of the C protocol, by out-of-band means, or by pre-provisioning. The way the Contex
ontext. ts are provisioned is out of the scope of this document.</t>
<section anchor="schc-cd-rules" numbered="true" toc="default">
<name>SCHC C/D Rules</name>
<t>The main idea of the SCHC compression scheme is to transmit the RuleI
D to the other end instead of sending known field values. This RuleID identifies
a Rule that matches the original packet values. Hence, when a value is known by
both ends, it is only necessary to send the corresponding RuleID over the LPWAN
.
The manner by which Rules are generated is out of the scope of this document. Th
e Rules <bcp14>MAY</bcp14> be changed at run-time, but the mechanism is out of s
cope of this document.</t>
<t>The SCHC C/D Context is a set of Rules.
See <xref target="Fig-ctxt" format="default"/> for a high-level, abstract repres
entation of the Context.
The formal specification of the representation of the Rules is outside the scope of this document.</t> The formal specification of the representation of the Rules is outside the scope of this document.</t>
<t>Each Rule itself contains a list of Field Descriptors composed of a F
<t>Each Rule itself contains a list of Field Descriptions composed of a Field Id ield Identifier (FID), a Field Length (FL), a Field Position (FP), a Direction I
entifier (FID), a Field Length (FL), a Field Position (FP), a Direction Indicato ndicator (DI), a Target Value (TV), a Matching Operator (MO), and a Compression/
r (DI), a Target Value (TV), a Matching Operator (MO) and a Compression/Decompre Decompression Action (CDA).</t>
ssion Action (CDA).</t> <figure anchor="Fig-ctxt">
<name>A SCHC C/D Context</name>
<figure title="A Compression/Decompression Context" anchor="Fig-ctxt"><artwork>< <artwork name="" type="" align="left" alt=""><![CDATA[
![CDATA[
/-----------------------------------------------------------------\ /-----------------------------------------------------------------\
| Rule N | | Rule N |
/-----------------------------------------------------------------\| /-----------------------------------------------------------------\|
| Rule i || | Rule i ||
/-----------------------------------------------------------------\|| /-----------------------------------------------------------------\||
| (FID) Rule 1 ||| | (FID) Rule 1 |||
|+-------+--+--+--+------------+-----------------+---------------+||| |+-------+--+--+--+------------+-----------------+---------------+|||
||Field 1|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act|||| ||Field 1|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act||||
|+-------+--+--+--+------------+-----------------+---------------+||| |+-------+--+--+--+------------+-----------------+---------------+|||
||Field 2|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act|||| ||Field 2|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act||||
|+-------+--+--+--+------------+-----------------+---------------+||| |+-------+--+--+--+------------+-----------------+---------------+|||
||... |..|..|..| ... | ... | ... |||| ||... |..|..|..| ... | ... | ... ||||
|+-------+--+--+--+------------+-----------------+---------------+||/ |+-------+--+--+--+------------+-----------------+---------------+||/
||Field N|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act||| ||Field N|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act|||
|+-------+--+--+--+------------+-----------------+---------------+|/ |+-------+--+--+--+------------+-----------------+---------------+|/
| | | |
\-----------------------------------------------------------------/ \-----------------------------------------------------------------/]]></artwork>
</figure>
]]></artwork></figure> <t>A Rule does not describe how the compressor parses a packet header to
find and identify each field (e.g., the IPv6 Source Address, the UDP Destinatio
<t>A Rule does not describe how the compressor parses a packet header to find an n Port, or a CoAP URI path option).
d identify each field (e.g., the IPv6 Source Address, the UDP Destination Port o
r a CoAP URI path option).
It is assumed that there is a protocol parser alongside SCHC that is able to ide ntify It is assumed that there is a protocol parser alongside SCHC that is able to ide ntify
all the fields encountered in the headers to be compressed, all the fields encountered in the headers to be compressed,
and to label them with a Field ID. and to label them with a Field ID.
Rules only describe the compression/decompression behavior for each header field , after it has been identified.</t> Rules only describe the compression/decompression behavior for each header field , after it has been identified.</t>
<t>In a Rule, the Field Descriptors are listed in the order in which the
<t>In a Rule, the Field Descriptions are listed in the order in which the fields fields appear in the packet header.
appear in the packet header. The Field Descriptors describe the header fields with the following entries:</t>
The Field Descriptions describe the header fields with the following entries:</t <ul spacing="normal">
> <li>Field Identifier (FID) designates a protocol and field (e.g., UDP
Destination Port), unambiguously among all protocols that a SCHC compressor proc
<t><list style="symbols"> esses. In the presence of protocol nesting, the Field ID also identifies the nes
<t>Field ID (FID) designates a protocol and field (e.g., UDP Destination Port) ting.</li>
, unambiguously among all protocols that a SCHC compressor processes. In the pre <li>Field Length (FL) represents the length of the original field. It
sence of protocol nesting, the Field ID also identifies the nesting.</t> can be either a fixed value (in bits) if the length is known when the Rule is cr
<t>Field Length (FL) represents the length of the original field. It can be ei eated or a type if the length is variable. The length of a header field is defin
ther a fixed value (in bits) if the length is known when the Rule is created or ed by its own protocol specification (e.g., IPv6 or UDP). If the length is varia
a type if the length is variable. The length of a header field is defined by its ble, the type defines the process to compute the length and its unit (bits, byte
own protocol specification (e.g., IPv6 or UDP). If the length is variable, the s...).</li>
type defines the process to compute the length and its unit (bits, bytes…).</t> <li>Field Position (FP): most often, a field only occurs once in a pac
<t>Field Position (FP): most often, a field only occurs once in a packet heade ket header.
r.
However, some fields may occur multiple times. An example is the uri-path of CoA P. However, some fields may occur multiple times. An example is the uri-path of CoA P.
FP indicates which occurrence this Field Description applies to. FP indicates which occurrence this Field Descriptor applies to.
If FP is not specified in the Field Description, it takes the default value of 1 The default value is 1.
.
The value 1 designates the first occurrence. The value 1 designates the first occurrence.
The value 0 is special. It means “don’t care”, see <xref target="PProcessing"/>. The value 0 is special. It means "don't care", see <xref target="PProcessing" fo
</t> rmat="default"/>.</li>
<t>A Direction Indicator (DI) indicates the packet direction(s) this Field Des <li>
cription applies to. Three values are possible: <list style="symbols"> <t>A Direction Indicator (DI) indicates the packet direction(s) this
<t>UPLINK (Up): this Field Description is only applicable to packets sent Field Descriptor applies to. It allows for asymmetric processing, using the sam
by the Dev to the App,</t> e Rule. Three values are possible: </t>
<t>DOWNLINK (Dw): this Field Description is only applicable to packets sen <dl spacing="normal" newline="false">
t from the App to the Dev,</t> <dt>Up:</dt><dd>this Field Descriptor is only applicable to packet
<t>BIDIRECTIONAL (Bi): this Field Description is applicable to packets tra s traveling Uplink.</dd>
veling both Up and Dw.</t> <dt>Dw:</dt><dd>this Field Descriptor is only applicable to packet
</list></t> s traveling Downlink.</dd>
<t>Target Value (TV) is the value used to match against the packet header fiel <dt>Bi:</dt><dd>this Field Descriptor is applicable to packets tra
d. The Target Value can be a scalar value of any type (integer, strings, etc.) o veling Uplink or Downlink.</dd>
r a more complex structure (array, list, etc.). The types and representations ar </dl>
e out of scope for this document.</t> </li>
<t>Matching Operator (MO) is the operator used to match the Field Value and th <li>Target Value (TV) is the value used to match against the packet he
e Target Value. The Matching Operator may require some parameters. MO is only us ader field. The Target Value can be a scalar value of any type (integer, strings
ed during the compression phase. The set of MOs defined in this document can be , etc.) or a more complex structure (array, list, etc.). The types and represent
found in <xref target="chap-MO"/>.</t> ations are out of scope for this document.</li>
<t>Compression Decompression Action (CDA) describes the compression and decomp <li>Matching Operator (MO) is the operator used to match the field val
ression processes to be performed after the MO is applied. Some CDAs might use p ue and the Target Value. The Matching Operator may require some parameters. The
arameter values for their operation. CDAs are used in both the compression and t set of MOs defined in this document can be found in <xref target="chap-MO" forma
he decompression functions. The set of CDAs defined in this document can be foun t="default"/>.</li>
d in <xref target="chap-CDA"/>.</t> <li>Compression/Decompression Action (CDA) describes the pair of actio
</list></t> ns that are performed at the compressor to compress a header field and at the de
compressor to recover the original value of the header field. Some CDAs might us
</section> e parameter values for their operation. The set of CDAs defined in this document
<section anchor="IDComp" title="Rule ID for SCHC C/D"> can be found in <xref target="chap-CDA" format="default"/>.</li>
</ul>
<t>Rule IDs are sent by the compression function in one side and are received fo </section>
r the decompression function in the other side.
In SCHC C/D, the Rule IDs are specific to the Context related to one Dev. Hence,
multiple Dev instances, which refer to different header compression Contexts, M
AY reuse the same Rule ID for different Rules.
On the Network infrastructure side, in order to identify the correct Rule to be
applied, the SCHC Decompressor needs to associate the Rule ID with the Dev ident
ifier.
Similarly, the SCHC Compressor on the Network infrastructure side first identifi
es the destination Dev before looking for the appropriate compression Rule (and
associated Rule ID) in the Context of that Dev.</t>
</section>
<section anchor="PProcessing" title="Packet processing">
<t>The compression/decompression process follows several phases:</t> <section anchor="PProcessing" numbered="true" toc="default">
<name>Packet Processing</name>
<t>The compression/decompression process follows several phases:</t>
<dl spacing="normal">
<t><list style="symbols"> <dt>Compression Rule selection:</dt><dd><t>the general idea is to br
<t>Compression Rule selection: the general idea is to browse the Rule set to f owse the Rule set to find a Rule that has a matching
ind a Rule that has a matching
Field Descriptor (given the DI and FP) for all and only those header fields that appear in the packet being compressed. Field Descriptor (given the DI and FP) for all and only those header fields that appear in the packet being compressed.
The detailed algorithm is the following: <list style="symbols"> The detailed algorithm is the following: </t>
<t>The first step is to check the Field Identifiers (FID). <ul spacing="normal">
If any header field of the packet being examined cannot be matched with a Field <li>The first step is to check the FIDs.
Description with the correct FID, the Rule MUST be disregarded. If any header field of the packet being examined cannot be matched with a Field
If any Field Description in the Rule has a FID that cannot be matched to one of Descriptor with the correct FID, the Rule <bcp14>MUST</bcp14> be disregarded.
the header fields of the packet being examined, the Rule MUST be disregarded.</t If any Field Descriptor in the Rule has a FID that cannot be matched to one of t
> he header fields of the packet being examined, the Rule <bcp14>MUST</bcp14> be d
<t>The next step is to match the Field Descriptions by their direction, us isregarded.</li>
ing the Direction Indicator (DI). If any field of the packet header cannot be ma <li>The next step is to match the Field Descriptors by their direc
tched with a Field Description with the correct FID and DI, the Rule MUST be dis tion, using the DI. If any field of the packet header cannot be matched with a F
regarded.</t> ield Descriptor with the correct FID and DI, the Rule <bcp14>MUST</bcp14> be dis
<t>Then the Field Descriptions are further selected according to Field Pos regarded.</li>
ition (FP). If any field of the packet header cannot be matched with a Field Des <li>
cription with the correct FID, DI and FP, the Rule MUST be disregarded. <vs <t>Then, the Field Descriptors are further selected according to
pace blankLines='1'/> FP. If any field of the packet header cannot be matched with a Field Descriptor
The value 0 for FP means “don’t care”, i.e. the comparison of this Field Descrip with the correct FID, DI and FP, the Rule <bcp14>MUST</bcp14> be disregarded.
tion’s FP with </t>
the position of the field of the packet header being compressed returns True, wh <t>
atever that position. The value 0 for FP means "don't care", i.e., the comparison of this Field Descri
FP=0 can be useful to build compression Rules for protocols headers in which ptor's FP with
the position of the field of the packet header being compressed
returns True, whatever that position. FP=0 can be useful to build compression R
ules for protocol headers in which
some fields order is irrelevant. An example could be uri-queries in CoAP. some fields order is irrelevant. An example could be uri-queries in CoAP.
Care needs to be exercised when writing Rules containing FP=0 values. Care needs to be exercised when writing Rules containing FP=0 values.
Indeed, it may result in decompressed packets having fields ordered differently compared to the original packet.</t> Indeed, it may result in decompressed packets having fields ordered differently compared to the original packet.</t>
<t>Once each header field has been associated with a Field Description wit </li>
h matching FID, DI and FP, each packet field’s value is then compared to the cor <li>
responding Target Value (TV) stored in the Rule for that specific field, using t <t>Once each header field has been associated with a Field Descr
he matching operator (MO). iptor with matching FID, DI, and FP, each packet field's value is then compared
If every field in the packet header satisfies the corresponding matching operato to the corresponding TV stored in the Rule for that specific field, using the MO
rs (MO) of a Rule (i.e. all MO results are True), that Rule is valid for use to .
compress the header. If every field in the packet header satisfies the corresponding MOs of a Rule (i
Otherwise, the Rule MUST be disregarded. <vspace blankLines='1'/> .e., all MO results are True), that Rule is valid for use to compress the header
This specification does not prevent multiple Rules from matching the above steps .
and therefore being valid for use. Otherwise, the Rule <bcp14>MUST</bcp14> be disregarded. </t>
<t>
This specification does not prevent multiple Rules from matching the above steps
and, therefore, being valid for use.
Which Rule to use among multiple valid Rules is left to the implementation. Which Rule to use among multiple valid Rules is left to the implementation.
As long as the same Rule set is installed at both ends, this degree of freedom d oes not constitute an interoperability issue.</t> As long as the same Rule set is installed at both ends, this degree of freedom d oes not constitute an interoperability issue.</t>
<t>If no valid compression Rule is found, then the packet MUST be sent unc </li>
ompressed <li>If no valid compression Rule is found, then the packet <bcp14>
using the Rule ID dedicated to this purpose (see <xref target="RuleID"/>). MUST</bcp14> be sent uncompressed
The entire packet header is the Compression Residue (see <xref target="Fig-SCHCp using the RuleID dedicated to this purpose (see <xref target="RuleID" format="de
ckt"/>). fault"/>).
Sending an uncompressed header is likely to require SCHC F/R.</t> The entire packet header is the Compression Residue (see <xref target="Fig-SCHCp
</list></t> ckt" format="default"/>).
<t>Compression: if a valid Rule was found, each field of the header is compres Sending an uncompressed header is likely to require SCHC F/R.</li>
sed according to the Compression/Decompression Actions (CDAs) of the Rule. </ul></dd>
The fields are compressed in the order that the Field Descriptions appear in the
Rule.
The compression of each field results in a residue, which may be empty.
The Compression Residue for the packet header is the concatenation of the non-em
pty residues for each field of the header, in the order the Field Descriptions a
ppear in the Rule.
The order in which the Field Descriptions appear in the Rule is therefore semant
ically important.</t>
</list></t>
<figure title="Compression Residue structure" anchor="Fig-CompRes"><artwork><![C <dt>Compression:</dt><dd>if a valid Rule is found, each field of the h
DATA[ eader is compressed according to the CDAs of the Rule.
The fields are compressed in the order that the Field Descriptors appear in the
Rule.
The compression of each field results in a residue, which may be empty.
The Compression Residue for the packet header is the concatenation of the non-em
pty residues for each field of the header, in the order the Field Descriptors ap
pear in the Rule.
The order in which the Field Descriptors appear in the Rule is therefore semanti
cally important.</dd>
</dl>
<figure anchor="Fig-CompRes">
<name>Compression Residue Structure</name>
<artwork name="" type="" align="left" alt=""><![CDATA[
|------------------- Compression Residue -------------------| |------------------- Compression Residue -------------------|
+-----------------+-----------------+-----+-----------------+ +-----------------+-----------------+-----+-----------------+
| field 1 residue | field 2 residue | ... | field N residue | | field 1 residue | field 2 residue | ... | field N residue |
+-----------------+-----------------+-----+-----------------+ +-----------------+-----------------+-----+-----------------+]]></artwork>
</figure>
]]></artwork></figure> <dl spacing="normal">
<dt>Sending:</dt><dd>The RuleID is sent to the other end jointly with
<t><list style="symbols"> the Compression Residue (which could be empty) or the uncompressed header, and d
<t>Sending: The Rule ID is sent to the other end followed by the Compression R irectly followed by the payload (see <xref target="Fig-SCHCpckt" format="default
esidue (which could be empty) or the uncompressed header, and directly followed "/>).
by the payload (see <xref target="Fig-SCHCpckt"/>). The way the RuleID is sent will be specified in the Profile and is out of the sc
The way the Rule ID is sent will be specified in the Profile and is out of the s ope of the present document.
cope of the present document. For example, it could be included in an L2 header or sent as part of the L2 payl
For example, it could be included in an L2 header or sent as part of the L2 payl oad.</dd>
oad.</t>
<t>Decompression: when decompressing, on the Network infrastructure side the S
CHC C/D needs to find the correct Rule based on the L2 address of the Dev; in th
is way, it can use the DevIID and the Rule ID. On the Dev side, only the Rule ID
is needed to identify the correct Rule since the Dev typically only holds Rules
that apply to itself. <vspace blankLines='1'/>
This Rule describes the compressed header format. From this, the decompressor de
termines the order of the residues, the fixed-sized or variable-sized nature of
each residue (see <xref target="var-length-field"/>),
and the size of the fixed-sized residues. <vspace blankLines='1'/>
From the received compressed header, it can therefore retrieve all the residue v
alues and associate them to the corresponding header fields. <vspace blankLines
='1'/>
For each field in the header, the receiver applies the CDA action associated to
that field in order to reconstruct the original header field value. The CDA appl
ication order can be different from the order in which the fields are listed in
the Rule. In particular, Compute-* MUST be applied after the application of the
CDAs of all the fields it computes on.</t>
</list></t>
</section>
<section anchor="chap-MO" title="Matching operators">
<t>Matching Operators (MOs) are functions used by both SCHC C/D endpoints. They
are not typed and can be applied to integer, string or any other data type. The
result of the operation can either be True or False. MOs are defined as follows:
</t>
<t><list style="symbols">
<t>equal: The match result is True if the field value in the packet matches th
e TV.</t>
<t>ignore: No matching is attempted between the field value in the packet and
the TV in the Rule. The result is always true.</t>
<t>MSB(x): A match is obtained if the most significant (leftmost) x bits of th
e packet header field value are equal to the TV in the Rule. The x parameter of
the MSB MO indicates how many bits are involved in the comparison. If the FL is
described as variable, the x parameter must be a multiple of the FL unit. For ex
ample, x must be multiple of 8 if the unit of the variable length is bytes.</t>
<t>match-mapping: With match-mapping, the Target Value is a list of values. Ea
ch value of the list is identified by an index. Compression is achieved by sendi
ng the index instead of the original header field value. This operator matches i
f the header field value is equal to one of the values in the target list.</t>
</list></t>
</section>
<section anchor="chap-CDA" title="Compression Decompression Actions (CDA)">
<t>The Compression Decompression Action (CDA) describes the actions taken during
the compression of header fields and the inverse action taken by the decompress
or to restore the original value.</t>
<texttable title="Compression and Decompression Actions" anchor="Fig-function">
<ttcol align='left'>Action</ttcol>
<ttcol align='left'>Compression</ttcol>
<ttcol align='left'>Decompression</ttcol>
<c>&#160;</c>
<c>&#160;</c>
<c>&#160;</c>
<c>not-sent</c>
<c>elided</c>
<c>use TV stored in Rule</c>
<c>value-sent</c>
<c>send</c>
<c>use received value</c>
<c>mapping-sent</c>
<c>send index</c>
<c>retrieve value from TV list</c>
<c>LSB</c>
<c>send LSB</c>
<c>concat. TV and received value</c>
<c>compute-*</c>
<c>elided</c>
<c>recompute at decompressor</c>
<c>DevIID</c>
<c>elided</c>
<c>build IID from L2 Dev addr</c>
<c>AppIID</c>
<c>elided</c>
<c>build IID from L2 App addr</c>
</texttable>
<t><xref target="Fig-function"/> summarizes the basic actions that can be used t
o compress and decompress a field. The first column shows the action’s name. The
second and third columns show the compression and decompression behaviors for e
ach action.</t>
<section anchor="fixed-length-field" title="processing fixed-length fields"> <dt>Decompression:</dt><dd><t>when decompressing, on the Network Inf
rastructure side, the SCHC C/D needs to find the correct Rule based on the L2 ad
dress of the Dev.&nbsp; On the Dev side, only the RuleID is needed to identify t
he correct Rule since the Dev typically only holds Rules that apply to itself.
</t>
<t>
This Rule describes the compressed header format. From this, the decompressor de
termines the order of the residues, the fixed-size or variable-size nature of ea
ch residue (see <xref target="var-length-field" format="default"/>),
and the size of the fixed-size residues. </t>
<t>
Therefore, from the received compressed header, it can retrieve all the residue
values and associate them to the corresponding header fields. </t>
<t>
For each field in the header, the receiver applies the CDA action associated wit
h that field in order to reconstruct the original header field value. The CDA ap
plication order can be different from the order in which the fields are listed i
n the Rule. In particular, Compute-* <bcp14>MUST</bcp14> be applied after the ap
plication of the CDAs of all the fields it computes on.</t>
</dd>
</dl>
</section>
<section anchor="chap-MO" numbered="true" toc="default">
<name>Matching Operators</name>
<t>MOs are functions used at the compression side of SCHC C/D. They are
not typed and can be applied to integer, string or any other data type. The resu
lt of the operation can either be True or False. The following MOs are defined:<
/t>
<dl spacing="normal">
<dt>equal:</dt><dd>The match result is True if the field value in the
packet matches the TV.</dd>
<dt>ignore:</dt><dd>No matching is attempted between the
field value in the packet and the TV in the Rule. The result
is always True.</dd>
<t>If the field is identified in the Field Description as being of fixed length, <dt>MSB(x):</dt><dd>A match is obtained if the most significant (leftm
then applying the CDA to compress this field results in a fixed amount of bits. ost) x bits of the packet header field value are equal to the TV in the Rule. Th
e x parameter of the MSB MO indicates how many bits are involved in the comparis
on. If the FL is described as variable, the x parameter must be a multiple of th
e FL unit. For example, x must be multiple of 8 if the unit of the variable leng
th is bytes.</dd>
<dt>match-mapping:</dt><dd>With match-mapping, TV is a list of values.
Each value of the list is identified by an index. Compression is achieved by se
nding the index instead of the original header field value. This operator matche
s if the header field value is equal to one of the values in the target list.</d
d>
</dl>
</section>
<section anchor="chap-CDA" numbered="true" toc="default">
<name>Compression/Decompression Actions (CDA)</name>
<t>The CDA specifies the actions taken during the compression of header
fields and the inverse action taken by the decompressor to restore the original
value.
The CDAs defined by this document are described in detail in <xref targe
t="NotSentCDA" format="default"/> to <xref target="compute-" format="default"/>.
They are summarized in <xref target="Fig-function" format="default"/>.</
t>
<table anchor="Fig-function" align="center">
<name>Compression and Decompression Actions</name>
<thead>
<tr>
<th align="left">Action</th>
<th align="left">Compression</th>
<th align="left">Decompression</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">not-sent</td>
<td align="left">elided</td>
<td align="left">use TV stored in Rule</td>
</tr>
<tr>
<td align="left">value-sent</td>
<td align="left">send</td>
<td align="left">use received value</td>
</tr>
<tr>
<td align="left">mapping-sent</td>
<td align="left">send index</td>
<td align="left">retrieve value from TV list</td>
</tr>
<tr>
<td align="left">LSB</td>
<td align="left">send least significant bits (LSB)</td>
<td align="left">concatenate TV and received value</td>
</tr>
<tr>
<td align="left">compute-*</td>
<td align="left">elided</td>
<td align="left">recompute at decompressor</td>
</tr>
<tr>
<td align="left">DevIID</td>
<td align="left">elided</td>
<td align="left">build IID from L2 Dev addr</td>
</tr>
<tr>
<td align="left">AppIID</td>
<td align="left">elided</td>
<td align="left">build IID from L2 App addr</td>
</tr>
</tbody>
</table>
<t>The first column shows the action's name. The second and third column
s show the compression and decompression behaviors for each action.</t>
<section anchor="fixed-length-field" numbered="true" toc="default">
<name>Processing Fixed-Length Fields</name>
<t>If the field is identified in the Field Descriptor as being of fixe
d length, then applying the CDA to compress this field results in a fixed amount
of bits.
The residue for that field is simply the bits resulting from applying the CDA to the field. The residue for that field is simply the bits resulting from applying the CDA to the field.
This value may be empty (e.g., not-sent CDA), in which case the field residue is absent from the Compression Residue.</t> This value may be empty (e.g., not-sent CDA), in which case the field residue is absent from the Compression Residue.</t>
<figure anchor="Fig-FieldResFixLength">
<figure title="fixed sized field residue structure" anchor="Fig-FieldResFixLengt <name>Fixed-Size Field Residue Structure</name>
h"><artwork><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
|- field residue -| |- field residue -|
+-----------------+ +-----------------+
| value | | value |
+-----------------+ +-----------------+]]></artwork>
</figure>
]]></artwork></figure> </section>
<section anchor="var-length-field" numbered="true" toc="default">
</section> <name>Processing Variable-Length Fields</name>
<section anchor="var-length-field" title="processing variable-length fields"> <t>If the field is identified in the Field Descriptor as being of vari
able length,
<t>If the field is identified in the Field Description as being of variable leng
th,
then applying the CDA to compress this field may result in a value of fixed size then applying the CDA to compress this field may result in a value of fixed size
(e.g., not-sent or mapping-sent) (e.g., not-sent or mapping-sent)
or of variable size (e.g., value-sent or LSB). or of variable size (e.g., value-sent or LSB).
In the latter case, the residue for that field is the bits that result from appl ying the CDA to the field, preceded with the size of the value. In the latter case, the residue for that field is the bits that result from appl ying the CDA to the field, preceded with the size of the value.
The most significant bit of the size is stored to the left (leftmost bit of the residue field).</t> The most significant bit of the size is stored to the left (leftmost bit of the residue field).</t>
<figure anchor="Fig-FieldResVarLength">
<figure title="variable sized field residue structure" anchor="Fig-FieldResVarLe <name>Variable-Size Field Residue Structure</name>
ngth"><artwork><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
|--- field residue ---| |--- field residue ---|
+-------+-------------+ +-------+-------------+
| size | value | | size | value |
+-------+-------------+ +-------+-------------+]]></artwork>
</figure>
]]></artwork></figure> <t>The size (using the unit defined in the FL) is encoded on 4, 12, or
28 bits as follows:</t>
<t>The size (using the unit defined in the FL) is encoded on 4, 12 or 28 bits as <ul spacing="normal">
follows:</t> <li>If the size is between 0 and 14, it is encoded as a 4-bit unsign
ed integer.</li>
<t><list style="symbols"> <li>Sizes between 15 and 254 are encoded as 0b1111 followed by the 8
<t>If the size is between 0 and 14, it is encoded as a 4 bits unsigned integer -bit unsigned integer.</li>
.</t> <li>Larger sizes are encoded as 0xfff followed by the 16-bit unsigne
<t>Sizes between 15 and 254 are encoded as 0b1111 followed by the 8 bits unsig d integer.</li>
ned integer.</t> </ul>
<t>Larger sizes are encoded as 0xfff followed by the 16 bits unsigned integer. <t>If the field is identified in the Field Descriptor as being of vari
</t> able length and this field is not present in the packet header being compressed,
</list></t> size 0 <bcp14>MUST</bcp14> be sent to denote its absence.</t>
</section>
<t>If the field is identified in the Field Description as being of variable leng <section anchor="NotSentCDA" numbered="true" toc="default">
th and this field is not present in the packet header being compressed, size 0 M <name>Not-Sent CDA</name>
UST be sent to denote its absence.</t> <t>The not-sent action can be used when the field value is
specified in a Rule and, therefore, known by both the
</section> Compressor and the Decompressor. This action
<section anchor="NotSentCDA" title="not-sent CDA"> <bcp14>SHOULD</bcp14> be used with the "equal" MO. If MO is
"ignore", there is a risk of having a decompressed field
<t>The not-sent action can be used when the field value is specified in a Rule a value that is different from the original field that was compressed.</t
nd therefore known by both the Compressor and the Decompressor. This action SHOU >
LD be used with the “equal” MO. If MO is “ignore”, there is a risk to have a dec <t>The compressor does not send any residue for a field on which not-s
ompressed field value different from the original field that was compressed.</t> ent compression is applied.</t>
<t>The decompressor restores the field value with the TV stored in the
<t>The compressor does not send any residue for a field on which not-sent compre matched Rule identified by the received RuleID.</t>
ssion is applied.</t> </section>
<section anchor="value-sent-cda" numbered="true" toc="default">
<t>The decompressor restores the field value with the Target Value stored in the <name>Value-Sent CDA</name>
matched Rule identified by the received Rule ID.</t> <t>The value-sent action can be used when the field value is not known
by both the Compressor and the Decompressor. The field is sent in its entirety,
</section> using the same bit order as in the original packet header.</t>
<section anchor="value-sent-cda" title="value-sent CDA"> <t>If this action is performed on a variable-length field, the size of
the residue value (using the units defined in FL) <bcp14>MUST</bcp14> be sent a
<t>The value-sent action can be used when the field value is not known by both t s described in <xref target="var-length-field" format="default"/>.</t>
he Compressor and the Decompressor. The field is sent in its entirety, using the <t>This action is generally used with the "ignore" MO.</t>
same bit order as in the original packet header.</t> </section>
<section anchor="mapping-sent-cda" numbered="true" toc="default">
<t>If this action is performed on a variable length field, the size of the resid <name>Mapping-Sent CDA</name>
ue value (using the units defined in FL) MUST be sent as described in <xref targ <t>The mapping-sent action is used to send an index (the index into th
et="var-length-field"/>.</t> e TV list of values) instead of the original value. This action is used together
with the "match-mapping" MO.</t>
<t>This action is generally used with the “ignore” MO.</t> <t>On the compressor side, the match-mapping MO searches the TV for a
match with the header field value. The mapping-sent CDA then sends the correspon
</section> ding index as the field residue.
<section anchor="mapping-sent-cda" title="mapping-sent CDA">
<t>The mapping-sent action is used to send an index (the index into the Target V
alue list of values) instead of the original value. This action is used together
with the “match-mapping” MO.</t>
<t>On the compressor side, the match-mapping Matching Operator searches the TV f
or a match with the header field value. The mapping-sent CDA then sends the corr
esponding index as the field residue.
The most significant bit of the index is stored to the left (leftmost bit of the residue field).</t> The most significant bit of the index is stored to the left (leftmost bit of the residue field).</t>
<t>On the decompressor side, the CDA uses the received index to restor
<t>On the decompressor side, the CDA uses the received index to restore the fiel e the field value by looking up the list in the TV.</t>
d value by looking up the list in the TV.</t> <t>The number of bits sent is the minimal size for coding all the poss
ible indices.</t>
<t>The number of bits sent is the minimal size for coding all the possible indic <t>The first element in the list <bcp14>MUST</bcp14> be represented by
es.</t> index value 0, and successive elements in the list <bcp14>MUST</bcp14> have ind
ices incremented by 1.</t>
<t>The first element in the list MUST be represented by index value 0, and succe </section>
ssive elements in the list MUST have indices incremented by 1.</t> <section anchor="lsb-cda" numbered="true" toc="default">
<name>LSB CDA</name>
</section> <t>The LSB action is used together with the "MSB(x)" MO to avoid sendi
<section anchor="lsb-cda" title="LSB CDA"> ng the most significant part of the packet field if that part is already known b
y the receiving end.</t>
<t>The LSB action is used together with the “MSB(x)” MO to avoid sending the mos <t>The compressor sends the LSBs as the field residue value.
t significant part of the packet field if that part is already known by the rece
iving end.</t>
<t>The compressor sends the Least Significant Bits as the field residue value.
The number of bits sent is the original header field length minus the length spe cified in the MSB(x) MO. The number of bits sent is the original header field length minus the length spe cified in the MSB(x) MO.
The bits appear in the residue in the same bit order as in the original packet h eader.</t> The bits appear in the residue in the same bit order as in the original packet h eader.</t>
<t>The decompressor concatenates the x most significant bits
<t>The decompressor concatenates the x most significant bits of Target Value and of the TV and the received residue value.</t>
the received residue value.</t> <t>If this action is performed on a variable-length field, the size of
the residue value (using the units defined in FL) <bcp14>MUST</bcp14> be sent a
<t>If this action is performed on a variable length field, the size of the resid s described in <xref target="var-length-field" format="default"/>.</t>
ue value (using the units defined in FL) MUST be sent as described in <xref targ </section>
et="var-length-field"/>.</t> <section anchor="deviid-appiid-cda" numbered="true" toc="default">
<name>DevIID, AppIID CDA</name>
</section> <t>These actions are used to process the DevIID and AppIID of the IPv6
<section anchor="deviid-appiid-cda" title="DevIID, AppIID CDA"> addresses, respectively. AppIID CDA is less common since most current LPWAN tec
hnologies frames contain a single L2 address, which is the Dev's address.</t>
<t>These actions are used to process respectively the Dev and the App Interface <t>The DevIID value <bcp14>MAY</bcp14> be computed from the Dev ID pre
Identifiers (DevIID and AppIID) of the IPv6 addresses. AppIID CDA is less common sent in the L2 header, or from some other stable identifier. The computation is
since most current LPWAN technologies frames contain a single L2 address, which specific to each Profile and <bcp14>MAY</bcp14> depend on the Dev ID size.</t>
is the Dev’s address.</t> <t>In the Downlink direction, at the compressor, the DevIID CDA may be
used to generate the L2 addresses on the LPWAN, based on the packet's Destinati
<t>The IID value MAY be computed from the Device ID present in the L2 header, or on Address.</t>
from some other stable identifier. The computation is specific to each Profile </section>
and MAY depend on the Device ID size.</t> <section anchor="compute-" numbered="true" toc="default">
<name>Compute-*</name>
<t>In the downlink direction (Dw), at the compressor, the DevIID CDA may be used <t>Some fields can be elided at the compressor and recomputed locally
to generate the L2 addresses on the LPWAN, based on the packet’s Destination Ad at the decompressor.</t>
dress.</t> <t>Because the field is uniquely identified by its FID (e.g., IPv6 len
gth), the relevant protocol specification unambiguously defines the algorithm fo
</section> r such computation.</t>
<section anchor="compute-" title="Compute-*"> <t>An example of a field that knows how to recompute itself is IPv6 le
ngth.</t>
<t>Some fields can be elided at the compressor and recomputed locally at the dec </section>
ompressor.</t> </section>
</section>
<t>Because the field is uniquely identified by its Field ID (e.g., UDP length), <section anchor="Frag" numbered="true" toc="default">
the relevant protocol specification unambiguously defines the algorithm for such <name>Fragmentation/Reassembly</name>
computation.</t> <section anchor="overview" numbered="true" toc="default">
<name>Overview</name>
<t>Examples of fields that know how to recompute themselves are UDP length, IPv6 <t>In LPWAN technologies, the L2 MTU typically ranges from tens to hundr
length and UDP checksum.</t> eds of bytes.
</section>
</section>
</section>
<section anchor="Frag" title="Fragmentation/Reassembly">
<section anchor="overview" title="Overview">
<t>In LPWAN technologies, the L2 MTU typically ranges from tens to hundreds of b
ytes.
Some of these technologies do not have an internal fragmentation/reassembly mech anism.</t> Some of these technologies do not have an internal fragmentation/reassembly mech anism.</t>
<t>The optional SCHC F/R functionality enables such LPWAN technologies t
<t>The optional SCHC Fragmentation/Reassembly (SCHC F/R) functionality enables s o comply with the IPv6 MTU requirement of 1280 bytes <xref target="RFC8200" form
uch LPWAN technologies to comply with the IPv6 MTU requirement of 1280 bytes <xr at="default"/>.
ef target="RFC8200"/>. It is <bcp14>OPTIONAL</bcp14> to implement per this specification, but Profiles
It is OPTIONAL to implement per this specification, but Profiles may specify tha may specify that it is <bcp14>REQUIRED</bcp14>.</t>
t it is REQUIRED.</t> <t>This specification includes several SCHC F/R modes, which allow for a
range of reliability options such as optional SCHC Fragment retransmission.
<t>This specification includes several SCHC F/R modes, which allow for a range o
f reliability options such as optional SCHC Fragment retransmission.
More modes may be defined in the future.</t> More modes may be defined in the future.</t>
<t>The same SCHC F/R mode <bcp14>MUST</bcp14> be used for all SCHC Fragm
<t>The same SCHC F/R mode MUST be used for all SCHC Fragments of a given SCHC Pa ents of a given SCHC Packet.
cket.
This document does not specify which mode(s) must be implemented and used over a specific LPWAN technology. That information will be given in Profiles.</t> This document does not specify which mode(s) must be implemented and used over a specific LPWAN technology. That information will be given in Profiles.</t>
<t>SCHC allows transmitting non-fragmented SCHC Packet concurrently with
<t>SCHC allows transmitting non-fragmented SCHC Packet concurrently with fragmen fragmented SCHC Packets.
ted SCHC Packets. In addition, SCHC F/R provides protocol elements that allow transmitting several
In addition, SCHC F/R provides protocol elements that allow transmitting several fragmented SCHC Packets concurrently, i.e., interleaving the transmission of fr
fragmented SCHC Packets concurrently, i.e. interleaving the transmission of fra agments from different fragmented SCHC Packets.
gments from different fragmented SCHC Packets. A Profile <bcp14>MAY</bcp14> restrict the latter behavior.</t>
A Profile MAY restrict the latter behavior.</t> <t>The L2 Word size (see <xref target="Term" format="default"/>) determi
nes the encoding of some messages.
<t>The L2 Word size (see <xref target="Term"/>) determines the encoding of some
messages.
SCHC F/R usually generates SCHC Fragments and SCHC ACKs that are multiples of L2 Words.</t> SCHC F/R usually generates SCHC Fragments and SCHC ACKs that are multiples of L2 Words.</t>
</section>
</section> <section anchor="FragTools" numbered="true" toc="default">
<section anchor="FragTools" title="SCHC F/R Protocol Elements"> <name>SCHC F/R Protocol Elements</name>
<t>This subsection describes the different elements that are used to ena
<t>This subsection describes the different elements that are used to enable the ble the SCHC F/R functionality defined in this document.
SCHC F/R functionality defined in this document. These elements include the SCHC F/R messages, tiles, windows, bitmaps, counters,
These elements include the SCHC F/R messages, tiles, windows, bitmaps, counters, timers, and header fields.</t>
timers and header fields.</t> <t>The elements are described here in a generic manner. Their applicatio
n to each SCHC F/R mode is found in <xref target="FragModes" format="default"/>.
<t>The elements are described here in a generic manner. Their application to eac </t>
h SCHC F/R mode is found in <xref target="FragModes"/>.</t> <section anchor="messages" numbered="true" toc="default">
<name>Messages</name>
<section anchor="messages" title="Messages"> <t>SCHC F/R defines the following messages:</t>
<dl spacing="normal">
<t>SCHC F/R defines the following messages:</t> <dt>SCHC Fragment:</dt><dd>A message that carries part of a SCHC Pac
ket from the sender to the receiver.</dd>
<t><list style="symbols"> <dt>SCHC ACK:</dt><dd>An acknowledgement for fragmentation, by the r
<t>SCHC Fragment: A message that carries part of a SCHC Packet from the sender eceiver to the sender.
to the receiver.</t>
<t>SCHC ACK: An acknowledgement for fragmentation, by the receiver to the send
er.
This message is used to indicate whether or not the reception of pieces of, This message is used to indicate whether or not the reception of pieces of,
or the whole of the fragmented SCHC Packet, was successful.</t> or the whole of, the fragmented SCHC Packet was successful.</dd>
<t>SCHC ACK REQ: A request by the sender for a SCHC ACK from the receiver.</t> <dt>SCHC ACK REQ:</dt><dd>A request by the sender for a SCHC ACK fro
<t>SCHC Sender-Abort: A message by the sender telling the receiver that it has m the receiver.</dd>
aborted the transmission of a fragmented SCHC Packet.</t> <dt>SCHC Sender-Abort:</dt><dd>A message by the sender telling the r
<t>SCHC Receiver-Abort: A message by the receiver to tell the sender to abort eceiver that it has aborted the transmission of a fragmented SCHC Packet.</dd>
the transmission of a fragmented SCHC Packet.</t> <dt>SCHC Receiver-Abort:</dt><dd>A message by the receiver to tell t
</list></t> he sender to abort the transmission of a fragmented SCHC Packet.</dd>
</dl>
<t>The format of these messages is provided in <xref target="Fragfor"/>.</t> <t>The format of these messages is provided in <xref target="Fragfor"
format="default"/>.</t>
</section> </section>
<section anchor="OtherTools" title="Tiles, Windows, Bitmaps, Timers, Counters"> <section anchor="OtherTools" numbered="true" toc="default">
<name>Tiles, Windows, Bitmaps, Timers, Counters</name>
<section anchor="tiles" title="Tiles"> <section anchor="tiles" numbered="true" toc="default">
<name>Tiles</name>
<t>The SCHC Packet is fragmented into pieces, hereafter called tiles. <t>The SCHC Packet is fragmented into pieces, hereafter called "tile
The tiles MUST be non-empty and pairwise disjoint. s".
Their union MUST be equal to the SCHC Packet.</t> The tiles <bcp14>MUST</bcp14> be non-empty and pairwise disjoint.
Their union <bcp14>MUST</bcp14> be equal to the SCHC Packet.</t>
<t>See <xref target="Fig-TilesExample"/> for an example.</t> <t>See <xref target="Fig-TilesExample" format="default"/> for an exa
mple.</t>
<figure title="a SCHC Packet fragmented in tiles" anchor="Fig-TilesExample"><art <figure anchor="Fig-TilesExample">
work><![CDATA[ <name>SCHC Packet Fragmented in Tiles</name>
SCHC Packet <artwork name="" type="" align="left" alt=""><![CDATA[
+----+--+-----+---+----+-+---+---+-----+...-----+----+---+------+ SCHC Packet
Tiles | | | | | | | | | | | | | | +----+--+-----+---+----+-+---+-----+...-----+----+---+------+
+----+--+-----+---+----+-+---+---+-----+...-----+----+---+------+ Tiles | | | | | | | | | | | | |
+----+--+-----+---+----+-+---+-----+...-----+----+---+------+]]></artwor
]]></artwork></figure> k>
</figure>
<t>Modes (see <xref target="FragModes"/>) MAY place additional constraints on ti <t>Modes (see <xref target="FragModes" format="default"/>) <bcp14>MA
le sizes.</t> Y</bcp14> place additional constraints on tile sizes.</t>
<t>Each SCHC Fragment message carries at least one tile in its Paylo
<t>Each SCHC Fragment message carries at least one tile in its Payload, if the P ad, if the Payload field is present.</t>
ayload field is present.</t> </section>
<section anchor="Windows" numbered="true" toc="default">
</section> <name>Windows</name>
<section anchor="Windows" title="Windows"> <t>Some SCHC F/R modes may handle successive tiles in groups, called
windows.</t>
<t>Some SCHC F/R modes may handle successive tiles in groups, called windows.</t <t>If windows are used:</t>
> <ul spacing="normal">
<li>all the windows of a SCHC Packet, except the last one, <bcp14>
<t>If windows are used</t> MUST</bcp14> contain the same number of tiles.
This number is WINDOW_SIZE.</li>
<t><list style="symbols"> <li>WINDOW_SIZE <bcp14>MUST</bcp14> be specified in a Profile.</li
<t>all the windows of a SCHC Packet, except the last one, MUST contain the sam >
e number of tiles. <li>the windows are numbered.</li>
This number is WINDOW_SIZE.</t> <li>their numbers <bcp14>MUST</bcp14> increment by 1 from 0 upward
<t>WINDOW_SIZE MUST be specified in a Profile.</t> , from the start of the SCHC Packet to its end.</li>
<t>the windows are numbered.</t> <li>the last window <bcp14>MUST</bcp14> contain WINDOW_SIZE tiles
<t>their numbers MUST increment by 1 from 0 upward, from the start of the SCHC or less.</li>
Packet to its end.</t> <li>tiles are numbered within each window.</li>
<t>the last window MUST contain WINDOW_SIZE tiles or less.</t> <li>the tile indices <bcp14>MUST</bcp14> decrement by 1 from WINDO
<t>tiles are numbered within each window.</t> W_SIZE - 1 downward, looking from the start of the SCHC Packet toward its end.</
<t>the tile indices MUST decrement by 1 from WINDOW_SIZE - 1 downward, looking li>
from the start of the SCHC Packet toward its end.</t> <li>therefore, each tile of a SCHC Packet is uniquely identified b
<t>each tile of a SCHC Packet is therefore uniquely identified by a window num y a window number and a tile index within this window.</li>
ber and a tile index within this window.</t> </ul>
</list></t> <t>See <xref target="Fig-WindowsExample" format="default"/> for an e
xample.</t>
<t>See <xref target="Fig-WindowsExample"/> for an example.</t> <figure anchor="Fig-WindowsExample">
<name>SCHC Packet Fragmented in Tiles Grouped in 29 Windows, with
<figure title="a SCHC Packet fragmented in tiles grouped in 29 windows, with WIN WINDOW_SIZE = 5</name>
DOW_SIZE = 5" anchor="Fig-WindowsExample"><artwork><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
+---------------------------------------------...-------------+ +---------------------------------------------...-----------+
| SCHC Packet | | SCHC Packet |
+---------------------------------------------...-------------+ +---------------------------------------------...-----------+
Tile # | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 | 4 | | 0 | 4 | 3 |
Window # |-------- 0 --------|-------- 1 --------|- 2 ... 27 -|-- 28 -|
]]></artwork></figure>
<t><xref target="MultWinSizes"/> discusses the benefits of selecting one among m
ultiple window sizes depending on the size of the SCHC Packet to be fragmented.<
/t>
<t>When windows are used</t>
<t><list style="symbols">
<t>Bitmaps (see <xref target="Bitmap"/>) MAY be sent back by the receiver to t
he sender in a SCHC ACK message.</t>
<t>A Bitmap corresponds to exactly one Window.</t>
</list></t>
</section>
<section anchor="Bitmap" title="Bitmaps">
<t>Each bit in the Bitmap for a window corresponds to a tile in the window. Tile# | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 | 4 | | 0 | 4 |3|
Each Bitmap has therefore WINDOW_SIZE bits. Window# |-------- 0 --------|-------- 1 --------|- 2 ... 27 -|- 28-|]]></artwor
The bit at the left-most position corresponds to the tile numbered WINDOW_SIZE - k>
1. </figure>
<t><xref target="MultWinSizes" format="default"/> discusses the bene
fits of selecting one among multiple window sizes depending on the size of the S
CHC Packet to be fragmented.</t>
<t>When windows are used:</t>
<ul spacing="normal">
<li>Bitmaps (see <xref target="Bitmap" format="default"/>) <bcp14>
MAY</bcp14> be sent back by the receiver to the sender in a SCHC ACK message.</l
i>
<li>A Bitmap corresponds to exactly one Window.</li>
</ul>
</section>
<section anchor="Bitmap" numbered="true" toc="default">
<name>Bitmaps</name>
<t>Each bit in the Bitmap for a window corresponds to a tile in the
window.
Therefore, each Bitmap has WINDOW_SIZE bits.
The bit at the leftmost position corresponds to the tile numbered WINDOW_SIZE -
1.
Consecutive bits, going right, correspond to sequentially decreasing tile indice s. Consecutive bits, going right, correspond to sequentially decreasing tile indice s.
In Bitmaps for windows that are not the last one of a SCHC Packet, In Bitmaps for windows that are not the last one of a SCHC Packet,
the bit at the right-most position corresponds to the tile numbered 0. the bit at the rightmost position corresponds to the tile numbered 0.
In the Bitmap for the last window, In the Bitmap for the last window,
the bit at the right-most position corresponds either to the tile numbered 0 or the bit at the rightmost position corresponds either to the tile numbered 0 or t
to a tile that is sent/received as “the last one of the SCHC Packet” without exp o a tile that is sent/received as "the last one of the SCHC Packet" without expl
licitly stating its number (see <xref target="LastFrag"/>).</t> icitly stating its number (see <xref target="LastFrag" format="default"/>).</t>
<t>At the receiver:</t>
<t>At the receiver</t> <ul spacing="normal">
<li>a bit set to 1 in the Bitmap indicates that a tile associated
<t><list style="symbols"> with that bit position has been correctly received for that window.</li>
<t>a bit set to 1 in the Bitmap indicates that a tile associated with that bit <li>a bit set to 0 in the Bitmap indicates that there has been no
position has been correctly received for that window.</t> tile correctly received, associated with that bit position, for that window.
<t>a bit set to 0 in the Bitmap indicates that there has been no tile correctl Possible reasons include that the tile was not sent at all, not received, or rec
y received, associated with that bit position, for that window. eived with errors.</li>
Possible reasons include that the tile was not sent at all, not received, or rec </ul>
eived with errors.</t> </section>
</list></t> <section anchor="MiscTools" numbered="true" toc="default">
<name>Timers and Counters</name>
</section> <t>Some SCHC F/R modes can use the following timers and counters:</t
<section anchor="MiscTools" title="Timers and counters"> >
<dl spacing="normal">
<t>Some SCHC F/R modes can use the following timers and counters</t> <dt>Inactivity Timer:</dt><dd>a SCHC Fragment receiver uses this t
imer to abort waiting for a SCHC F/R message.</dd>
<t><list style="symbols"> <dt>Retransmission Timer:</dt><dd>a SCHC Fragment sender uses this
<t>Inactivity Timer: a SCHC Fragment receiver uses this timer to abort waiting timer to abort waiting for an expected SCHC ACK.</dd>
for a SCHC F/R message.</t> <dt>Attempts:</dt><dd>this counter counts the requests for SCHC AC
<t>Retransmission Timer: a SCHC Fragment sender uses this timer to abort waiti Ks, up to MAX_ACK_REQUESTS.</dd>
ng for an expected SCHC ACK.</t> </dl>
<t>Attempts: this counter counts the requests for SCHC ACKs, up to MAX_ACK_REQ </section>
UESTS.</t> </section>
</list></t> <section anchor="IntegrityChecking" numbered="true" toc="default">
<name>Integrity Checking</name>
</section> <t>The integrity of the fragmentation-reassembly process of a SCHC Pac
</section> ket <bcp14>MUST</bcp14> be checked at the receive end.
<section anchor="IntegrityChecking" title="Integrity Checking"> A Profile <bcp14>MUST</bcp14> specify how integrity checking is performed.</t>
<t>It is <bcp14>RECOMMENDED</bcp14> that integrity checking be perform
<t>The integrity of the fragmentation-reassembly process of a SCHC Packet MUST b ed by computing a Reassembly Check Sequence (RCS)
e checked at the receive end.
A Profile MUST specify how integrity checking is performed.</t>
<t>It is RECOMMENDED that integrity checking be performed by computing a Reassem
bly Check Sequence (RCS)
based on the SCHC Packet at the sender side based on the SCHC Packet at the sender side
and transmitting it to the receiver for comparison with the RCS locally computed after reassembly.</t> and transmitting it to the receiver for comparison with the RCS locally computed after reassembly.</t>
<t>The RCS supports UDP checksum elision by SCHC C/D (see <xref target
<t>The RCS supports UDP checksum elision by SCHC C/D (see <xref target="UDPcheck ="UDPchecksum" format="default"/>).</t>
sum"/>).</t> <t>The CRC32 polynomial 0xEDB88320 (i.e., the reversed polynomial repr
esentation, which is
<t>The CRC32 polynomial 0xEDB88320 (i.e., the reversed polynomial representation used in the Ethernet standard <xref target="ETHERNET" format="default"/>) is <bc
, which is p14>RECOMMENDED</bcp14> as the default algorithm for computing the
used in the Ethernet standard <xref target="ETHERNET"/>) is RECOMMENDED as the d
efault algorithm for computing the
RCS.</t> RCS.</t>
<t>The RCS <bcp14>MUST</bcp14> be computed on the full SCHC Packet con
<t>The RCS MUST be computed on the full SCHC Packet concatenated with the paddin catenated with the padding bits, if any, of the SCHC Fragment carrying the last
g bits, if any, of the SCHC Fragment carrying the last tile. tile.
The rationale is that the SCHC reassembler has no way of knowing the boundary be tween the last tile and the padding bits. The rationale is that the SCHC reassembler has no way of knowing the boundary be tween the last tile and the padding bits.
Indeed, this requires decompressing the SCHC Packet, which is out of the scope o f the SCHC reassembler.</t> Indeed, this requires decompressing the SCHC Packet, which is out of the scope o f the SCHC reassembler.</t>
<t>The concatenation of the complete SCHC Packet and any padding bits,
<t>The concatenation of the complete SCHC Packet and any padding bits, if presen if present, of the last SCHC Fragment does not
t, of the last SCHC Fragment does not
generally constitute an integer number of bytes. generally constitute an integer number of bytes.
CRC libraries are usually byte-oriented. CRC libraries are usually byte oriented.
It is RECOMMENDED that the concatenation of the It is <bcp14>RECOMMENDED</bcp14> that the concatenation of the
complete SCHC Packet and any last fragment padding bits be zero-extended to the next byte boundary and complete SCHC Packet and any last fragment padding bits be zero-extended to the next byte boundary and
that the RCS be computed on that byte array.</t> that the RCS be computed on that byte array.</t>
</section>
<section anchor="HeaderFields" numbered="true" toc="default">
<name>Header Fields</name>
<t>The SCHC F/R messages contain the following fields (see the formats
in <xref target="Fragfor" format="default"/>):</t>
<dl spacing="normal">
</section> <dt>RuleID:</dt><dd><t>this field is present in all the SCHC F/R m
<section anchor="HeaderFields" title="Header Fields"> essages. The Rule identifies:</t>
<ul spacing="normal">
<t>The SCHC F/R messages contain the following fields (see the formats in <xref <li>that a SCHC F/R message is being carried, as opposed to an u
target="Fragfor"/>):</t> nfragmented SCHC Packet,</li>
<li>which SCHC F/R mode is used,</li>
<t><list style="symbols"> <li>in case this mode uses windows, what the value of
<t>Rule ID: this field is present in all the SCHC F/R messages. The Rule ident WINDOW_SIZE is, and</li>
ifies <list style="symbols"> <li>what other optional fields are present and what the field si
<t>that a SCHC F/R message is being carried, as opposed to an unfragmented zes are.</li>
SCHC Packet,</t> </ul>
<t>which SCHC F/R mode is used</t> <t>
<t>in case this mode uses windows, what the value of WINDOW_SIZE is,</t>
<t>what other optional fields are present and what the field sizes are.</t
>
</list>
The Rule tells apart a non-fragmented SCHC Packet from SCHC Fragments. The Rule tells apart a non-fragmented SCHC Packet from SCHC Fragments.
It will also tell apart SCHC Fragments of fragmented SCHC Packets that use diffe rent SCHC F/R modes or different parameters. It will also tell apart SCHC Fragments of fragmented SCHC Packets that use diffe rent SCHC F/R modes or different parameters.
Interleaved transmission of these is therefore possible. <vspace blankLines='1' Therefore, interleaved transmission of these is possible. </t>
/> <t>
All SCHC F/R messages pertaining to the same SCHC Packet MUST bear the same Rule All SCHC F/R messages pertaining to the same SCHC Packet <bcp14>MUST</bcp14> bea
ID.</t> r the same RuleID.</t>
<t>Datagram Tag (DTag). </dd>
This field allows differentiating SCHC F/R messages belonging to different SCHC
Packets <dt>Datagram Tag (DTag):</dt><dd><t>This field allows differentiat
that may be using the same Rule ID simultaneously. ing SCHC F/R messages belonging to different SCHC Packets
Hence, it allows interleaving fragments of a new SCHC Packet with fragments of a that may be using the same RuleID simultaneously.
previous SCHC Packet under the same Rule ID. <vspace blankLines='1'/> Hence, it allows interleaving fragments of a new SCHC Packet with fragments of a
The size of the DTag field (called T, in bits) is defined by each Profile for ea previous SCHC Packet under the same RuleID. </t>
ch Rule ID. <t>
When T is 0, the DTag field does not appear in the SCHC F/R messages and the DTa The size of the DTag field (called "T", in bits) is defined by each Profile for
g value is defined as 0. <vspace blankLines='1'/> each RuleID.
When T is 0, there can be no more than one fragmented SCHC Packet in transit for When T is 0, the DTag field does not appear in the SCHC F/R messages and the DTa
each fragmentation Rule ID. <vspace blankLines='1'/> g value is defined as 0. </t>
If T is not 0, DTag <list style="symbols"> <t>
<t>MUST be set to the same value for all the SCHC F/R messages related to When T is 0, there can be no more than one fragmented SCHC Packet in transit for
the same fragmented SCHC Packet,</t> each fragmentation RuleID. </t>
<t>MUST be set to different values for SCHC F/R messages related to differ <t>
ent SCHC Packets that are being fragmented under the same Rule ID, and whose tra If T is not 0, DTag: </t>
nsmission may overlap.</t>
</list></t> <ul spacing="normal">
<t>W: The W field is optional. It is only present if windows are used. <li><bcp14>MUST</bcp14> be set to the same value for all the SCH
Its presence and size (called M, in bits) is defined by each SCHC F/R mode and e C F/R messages related to the same fragmented SCHC Packet, and</li>
ach Profile for each Rule ID. <vspace blankLines='1'/> <li><bcp14>MUST</bcp14> be set to different values for SCHC F/R
messages related to different SCHC Packets that are being fragmented under the s
ame RuleID and whose transmission may overlap.</li>
</ul>
</dd>
<dt>W:</dt><dd><t>The W field is optional. It is only present if w
indows are used.
Its presence and size (called "M", in bits) is defined by each SCHC F/R mode and
each Profile for each RuleID. </t>
<t>
This field carries information pertaining to the window a SCHC F/R message relat es to. This field carries information pertaining to the window a SCHC F/R message relat es to.
If present, W MUST carry the same value for all the SCHC F/R messages related to If present, W <bcp14>MUST</bcp14> carry the same value for all the SCHC F/R mess
the same window. ages related to the same window.
Depending on the mode and Profile, W may carry the full window number, or just t Depending on the mode and Profile, W may carry the full window number, or just t
he least significant bit or any other partial representation of the window numbe he LSB or any other partial representation of the window number.</t>
r.</t> </dd>
<t>Fragment Compressed Number (FCN). The FCN field is present in the SCHC Frag
ment Header. <dt>Fragment Compressed Number (FCN):</dt><dd><t>The FCN field is
Its size (called N, in bits) is defined by each Profile for each Rule ID. <vspa present in the SCHC Fragment Header.
ce blankLines='1'/> Its size (called "N", in bits) is defined by each Profile for each RuleID. </t>
<t>
This field conveys information about the progress in the sequence of tiles being transmitted by SCHC Fragment messages. This field conveys information about the progress in the sequence of tiles being transmitted by SCHC Fragment messages.
For example, it can contain a partial, efficient representation of a larger-size d tile index. For example, it can contain a partial, efficient representation of a larger-size d tile index.
The description of the exact use of the FCN field is left to each SCHC F/R mode. The description of the exact use of the FCN field is left to each SCHC F/R mode.
However, two values are reserved for special purposes. They help control the SCH However, two values are reserved for special purposes. They help control the SCH
C F/R process: <list style="symbols"> C F/R process: </t>
<t>The FCN value with all the bits equal to 1 (called All-1) signals that <ul spacing="normal">
the very last tile of a SCHC Packet has been transmitted. <li>The FCN value with all the bits equal to 1 (called "All-1")
By extension, if windows are used, the last window of a packet is called the All signals that the very last tile of a SCHC Packet has been transmitted.
-1 window.</t> By extension, if windows are used, the last window of a packet is called the "Al
<t>If windows are used, the FCN value with all the bits equal to 0 (called l-1" window.</li>
All-0) signals <li>If windows are used, the FCN value with all the bits equal t
o 0 (called "All-0") signals
the last tile of a window that is not the last one of the SCHC packet. the last tile of a window that is not the last one of the SCHC packet.
By extension, such a window is called an All-0 window.</t> By extension, such a window is called an "All-0 window".</li>
</list></t> </ul>
<t>Reassembly Check Sequence (RCS). </dd>
This field only appears in the All-1 SCHC Fragments.
Its size (called U, in bits) is defined by each Profile for each Rule ID. <vspa
ce blankLines='1'/>
See <xref target="IntegrityChecking"/> for the RCS default size, default polynom
ial and details on RCS computation.</t>
<t>C (integrity Check): C is a 1-bit field.
This field is used in the SCHC ACK message to report on the reassembled SCHC Pac
ket integrity check (see <xref target="IntegrityChecking"/>). <vspace blankLine
s='1'/>
A value of 1 tells that the integrity check was performed and is successful.
A value of 0 tells that the integrity check was not performed, or that is was a
failure.</t>
<t>Compressed Bitmap. The Compressed Bitmap is used together with windows and
Bitmaps (see <xref target="Bitmap"/>).
Its presence and size is defined for each F/R mode for each Rule ID. <vspace bl
ankLines='1'/>
This field appears in the SCHC ACK message to report on the receiver Bitmap (see
<xref target="BitmapTrunc"/>).</t>
</list></t>
</section>
</section>
<section anchor="Fragfor" title="SCHC F/R Message Formats">
<t>This section defines the SCHC Fragment formats, the SCHC ACK format, the SCHC <dt>Reassembly Check Sequence (RCS):</dt><dd><t>This field only ap
ACK REQ format and the SCHC Abort formats.</t> pears in the All-1 SCHC Fragments.
Its size (called "U", in bits) is defined by each Profile for each RuleID. </t>
<t>
See <xref target="IntegrityChecking" format="default"/> for the RCS default size
, default polynomial and details on RCS computation.</t>
</dd>
<section anchor="schc-fragment-format" title="SCHC Fragment format"> <dt>C (integrity Check):</dt><dd><t>C is a 1-bit field.
This field is used in the SCHC ACK message to report on the reassembled SCHC Pac
ket integrity check (see <xref target="IntegrityChecking" format="default"/>).
</t>
<t>
A value of 1 tells that the integrity check was performed and is successful.
A value of 0 tells that the integrity check was not performed or that it was a f
ailure.</t>
</dd>
<t>A SCHC Fragment conforms to the general format shown in <xref target="Fig-Fra <dt>Compressed Bitmap:</dt><dd><t>The Compressed Bitmap is used to
gFormat"/>. gether with windows and Bitmaps (see <xref target="Bitmap" format="default"/>).
Its presence and size is defined for each SCHC F/R mode for each RuleID. </t>
<t>
This field appears in the SCHC ACK message to report on the receiver Bitmap (see
<xref target="BitmapTrunc" format="default"/>).</t>
</dd>
</dl>
</section>
</section>
<section anchor="Fragfor" numbered="true" toc="default">
<name>SCHC F/R Message Formats</name>
<t>This section defines the SCHC Fragment formats, the SCHC ACK format,
the SCHC ACK REQ format and the SCHC Abort formats.</t>
<section anchor="schc-fragment-format" numbered="true" toc="default">
<name>SCHC Fragment Format</name>
<t>A SCHC Fragment conforms to the general format shown in <xref targe
t="Fig-FragFormat" format="default"/>.
It comprises a SCHC Fragment Header and a SCHC Fragment Payload. It comprises a SCHC Fragment Header and a SCHC Fragment Payload.
The SCHC Fragment Payload carries one or several tile(s).</t> The SCHC Fragment Payload carries one or several tile(s).</t>
<figure anchor="Fig-FragFormat">
<figure title="SCHC Fragment general format" anchor="Fig-FragFormat"><artwork><! <name>SCHC Fragment General Format</name>
[CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
+-----------------+-----------------------+~~~~~~~~~~~~~~~~~~~~~
| Fragment Header |   Fragment Payload | padding (as needed)
+-----------------+-----------------------+~~~~~~~~~~~~~~~~~~~~~ +-----------------+-----------------------+~~~~~~~~~~~~~~~~~~~~~
]]></artwork></figure> | Fragment Header | Fragment Payload | padding (as needed)
+-----------------+-----------------------+~~~~~~~~~~~~~~~~~~~~~]]></artwork>
<section anchor="NotLastFrag" title="Regular SCHC Fragment"> </figure>
<t>The Regular SCHC Fragment format is shown in <xref target="Fig-NotLastFrag"/> <section anchor="NotLastFrag" numbered="true" toc="default">
. <name>Regular SCHC Fragment</name>
<t>The Regular SCHC Fragment format is shown in <xref target="Fig-No
tLastFrag" format="default"/>.
Regular SCHC Fragments are generally used to carry tiles that are not the last o ne of a SCHC Packet. Regular SCHC Fragments are generally used to carry tiles that are not the last o ne of a SCHC Packet.
The DTag field and the W field are OPTIONAL, their presence is specified by each The DTag field and the W field are <bcp14>OPTIONAL</bcp14>, their presence is sp
mode and Profile.</t> ecified by each mode and Profile.</t>
<figure anchor="Fig-NotLastFrag">
<figure title="Detailed Header Format for Regular SCHC Fragments" anchor="Fig-No <name>Detailed Header Format for Regular SCHC Fragments</name>
tLastFrag"><artwork><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
|--- SCHC Fragment Header ----| |-- SCHC Fragment Header ----|
|-- T --|-M-|-- N --| |-- T --|-M-|-- N --|
+-- ... --+- ... -+---+- ... -+--------...-------+~~~~~~~~~~~~~~~~~~~~~ +-- ... -+- ... -+---+- ... -+--------...-------+~~~~~~~~~~~~~~~~~~~~
| Rule ID | DTag | W | FCN | Fragment Payload | padding (as needed) | RuleID | DTag | W | FCN | Fragment Payload | padding (as needed)
+-- ... --+- ... -+---+- ... -+--------...-------+~~~~~~~~~~~~~~~~~~~~~ +-- ... -+- ... -+---+- ... -+--------...-------+~~~~~~~~~~~~~~~~~~~~]]></artwor
]]></artwork></figure> k>
</figure>
<t>The FCN field MUST NOT contain all bits set to 1.</t> <t>The FCN field <bcp14>MUST NOT</bcp14> contain all bits set to 1.<
/t>
<t>Profiles MUST ensure that <t>Profiles <bcp14>MUST</bcp14> ensure that
a SCHC Fragment with FCN equal to 0 (called an All-0 SCHC Fragment) is distingui a SCHC Fragment with FCN equal to 0 (called an "All-0 SCHC Fragment") is disting
shable by size, uishable by size,
even in the presence of padding, even in the presence of padding,
from a SCHC ACK REQ message (see <xref target="ACKREQ"/>) with the same Rule ID value and with the same T, M and N values. from a SCHC ACK REQ message (see <xref target="ACKREQ" format="default"/>) with the same RuleID value and with the same T, M, and N values.
This condition is met if the Payload is at least the size of an L2 Word. This condition is met if the Payload is at least the size of an L2 Word.
This condition is also met if the SCHC Fragment Header is a multiple of L2 Words .</t> This condition is also met if the SCHC Fragment Header is a multiple of L2 Words .</t>
</section>
</section> <section anchor="LastFrag" numbered="true" toc="default">
<section anchor="LastFrag" title="All-1 SCHC Fragment"> <name>All-1 SCHC Fragment</name>
<t>The All-1 SCHC Fragment format is shown in <xref target="Fig-Last
<t>The All-1 SCHC Fragment format is shown in <xref target="Fig-LastFrag"/>. Frag" format="default"/>.
The sender uses the All-1 SCHC Fragment format for the message that completes th e emission of a fragmented SCHC Packet. The sender uses the All-1 SCHC Fragment format for the message that completes th e emission of a fragmented SCHC Packet.
The DTag field, the W field, the RCS field and the Payload are OPTIONAL, their p The DTag field, the W field, the RCS field and the Payload are <bcp14>OPTIONAL</
resence is specified by each mode and Profile. bcp14>, their presence is specified by each mode and Profile.
At least one of RCS field or Payload MUST be present. At least one of RCS field or Fragment Payload <bcp14>MUST</bcp14> be present.
The FCN field is all ones.</t> The FCN field is all ones.</t>
<figure anchor="Fig-LastFrag">
<figure title="Detailed Header Format for the All-1 SCHC Fragment" anchor="Fig-L <name>Detailed Header Format for the All-1 SCHC Fragment</name>
astFrag"><artwork><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
|-------- SCHC Fragment Header -------| |------- SCHC Fragment Header -------|
|-- T --|-M-|-- N --|-- U --| |-- T --|-M-|-- N --|-- U --|
+-- ... --+- ... -+---+- ... -+- ... -+------...-----+~~~~~~~~~~~~~~~~~~ +-- ... -+- ... -+---+- ... -+- ... -+-----...-----+~~~~~~~~~~~~~~~~~
| Rule ID | DTag | W | 11..1 | RCS | Frag Payload | pad. (as needed) | RuleID | DTag | W | 11..1 | RCS | FragPayload | pad. (as needed)
+-- ... --+- ... -+---+- ... -+- ... -+------...-----+~~~~~~~~~~~~~~~~~~ +-- ... -+- ... -+---+- ... -+- ... -+-----...-----+~~~~~~~~~~~~~~~~~
(FCN) (FCN)]]></artwork>
]]></artwork></figure> </figure>
<t>Profiles <bcp14>MUST</bcp14> ensure that
<t>Profiles MUST ensure that
an All-1 SCHC Fragment message is distinguishable by size, an All-1 SCHC Fragment message is distinguishable by size,
even in the presence of padding, even in the presence of padding,
from a SCHC Sender-Abort message (see <xref target="SenderAbort"/>) with the sam from a SCHC Sender-Abort message (see <xref target="SenderAbort" format="default
e Rule ID value and with the same T, M and N values. "/>) with the same RuleID value and with the same T, M, and N values.
This condition is met if the RCS is present and is at least the size of an L2 Wo This condition is met if the RCS is present and is at least the size of an L2 Wo
rd, rd
or if the Payload is present and at least the size an L2 Word. or if the Payload is present and is at least the size an L2 Word.
This condition is also met if the SCHC Sender-Abort Header is a multiple of L2 W ords.</t> This condition is also met if the SCHC Sender-Abort Header is a multiple of L2 W ords.</t>
</section>
</section>
<section anchor="ACK" numbered="true" toc="default">
<name>SCHC ACK Format</name>
<t>The SCHC ACK message is shown in <xref target="Fig-ACK-Format" form
at="default"/>.
The DTag field and the W field are <bcp14>OPTIONAL</bcp14>, their presence is sp
ecified by each mode and Profile.
The Compressed Bitmap field <bcp14>MUST</bcp14> be present in SCHC F/R modes tha
t use windows and <bcp14>MUST NOT</bcp14> be present in other modes.</t>
<figure anchor="Fig-ACK-Format">
<name>Format of the SCHC ACK Message</name>
<artwork name="" type="" align="left" alt=""><![CDATA[
|--- SCHC ACK Header ----|
|-- T --|-M-| 1 |
+-- ... -+- ... -+---+---+~~~~~~~~~~~~~~~~~~
| RuleID | DTag | W |C=1| padding as needed (success)
+-- ... -+- ... -+---+---+~~~~~~~~~~~~~~~~~~
</section> +-- ... -+- ... -+---+---+------ ... ------+~~~~~~~~~~~~~~~
</section> | RuleID | DTag | W |C=0|Compressed Bitmap| pad. as needed (failure)
<section anchor="ACK" title="SCHC ACK format"> +-- ... -+- ... -+---+---+------ ... ------+~~~~~~~~~~~~~~~]]></artwork>
</figure>
<t>The SCHC ACK message is shown in <xref target="Fig-ACK-Format"/>. <t>The SCHC ACK Header contains a C bit (see <xref target="HeaderField
The DTag field and the W field are OPTIONAL, their presence is specified by each s" format="default"/>).</t>
mode and Profile. <t>If the C bit is set to 1 (integrity check successful),
The Compressed Bitmap field MUST be present in SCHC F/R modes that use windows,
and MUST NOT be present in other modes.</t>
<figure title="Format of the SCHC ACK message" anchor="Fig-ACK-Format"><artwork>
<![CDATA[
|---- SCHC ACK Header ----|
|-- T --|-M-| 1 |
+--- ... -+- ... -+---+---+~~~~~~~~~~~~~~~~~~
| Rule ID | DTag | W |C=1| padding as needed (success)
+--- ... -+- ... -+---+---+~~~~~~~~~~~~~~~~~~
+--- ... -+- ... -+---+---+------ ... ------+~~~~~~~~~~~~~~~
| Rule ID | DTag | W |C=0|Compressed Bitmap| pad. as needed (failure)
+--- ... -+- ... -+---+---+------ ... ------+~~~~~~~~~~~~~~~
]]></artwork></figure>
<t>The SCHC ACK Header contains a C bit (see <xref target="HeaderFields"/>).</t>
<t>If the C bit is set to 1 (integrity check successful),
no Bitmap is carried.</t> no Bitmap is carried.</t>
<t>If the C bit is set to 0 (integrity check not performed or failed)
<t>If the C bit is set to 0 (integrity check not performed or failed) and if win and if windows are used,
dows are used,
a Compressed Bitmap for the window referred to by the W field is transmitted a Compressed Bitmap for the window referred to by the W field is transmitted
as specified in <xref target="BitmapTrunc"/>.</t> as specified in <xref target="BitmapTrunc" format="default"/>.</t>
<section anchor="BitmapTrunc" numbered="true" toc="default">
<section anchor="BitmapTrunc" title="Bitmap Compression"> <name>Bitmap Compression</name>
<t>For transmission, the Compressed Bitmap in the SCHC ACK message is defined by <t>For transmission, the Compressed Bitmap in the SCHC ACK message i
the following algorithm (see <xref target="Fig-Localbitmap"/> for a follow-alon s defined by the following algorithm (see <xref target="Fig-Localbitmap" format=
g example):</t> "default"/> for a follow-along example):</t>
<ul spacing="normal">
<t><list style="symbols"> <li>Build a temporary SCHC ACK message that contains the Header fo
<t>Build a temporary SCHC ACK message that contains the Header followed by the llowed by the original Bitmap
original Bitmap (see <xref target="Bitmap" format="default"/> for a description of Bitmaps).</l
(see <xref target="Bitmap"/> for a description of Bitmaps).</t> i>
<t>Position scissors at the end of the Bitmap, after its last bit.</t> <li>Position scissors at the end of the Bitmap, after
<t>While the bit on the left of the scissors is 1 and belongs to the Bitmap, k its last bit.</li>
eep moving left, then stop. When this is done,</t>
<t>While the scissors are not on an L2 Word boundary of the SCHC ACK message a
nd there is a Bitmap bit on the right of the scissors, keep moving right, then s
top.</t>
<t>At this point, cut and drop off any bits to the right of the scissors</t>
</list></t>
<t>When one or more bits have effectively been dropped off as a result of the ab
ove algorithm, the SCHC ACK message is a multiple of L2 Words, no padding bits w
ill be appended.</t>
<t>Because the SCHC Fragment sender knows the size of the original Bitmap, it ca
n reconstruct the original Bitmap from the Compressed Bitmap received in the SCH
ACK message.</t>
<t><xref target="Fig-Localbitmap"/> shows an example where L2 Words are actually
bytes and where the original Bitmap contains 17 bits, the last 15 of which are
all set to 1.</t>
<figure title="SCHC ACK Header plus uncompressed Bitmap" anchor="Fig-Localbitmap
"><artwork><![CDATA[
|---- SCHC ACK Header ----|-------- Bitmap --------|
|-- T --|-M-| 1 |
+--- ... -+- ... -+---+---+---------------------------------+
| Rule ID | DTag | W |C=0|1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1|
+--- ... -+- ... -+---+---+---------------------------------+
next L2 Word boundary ->|
]]></artwork></figure>
<t><xref target="Fig-transmittedbitmap"/> shows that the last 14 bits are not se
nt.</t>
<figure title="Resulting SCHC ACK message with Compressed Bitmap" anchor="Fig-tr
ansmittedbitmap"><artwork><![CDATA[
|---- SCHC ACK Header ----|CpBmp|
|-- T --|-M-| 1 |
+--- ... -+- ... -+---+---+-----+
| Rule ID | DTag | W |C=0|1 0 1|
+--- ... -+- ... -+---+---+-----+
next L2 Word boundary ->|
]]></artwork></figure>
<t><xref target="Fig-Bitmap-Win"/> shows an example of a SCHC ACK with tile indi
ces ranging from 6 down to 0, where the Bitmap indicates that the second and the
fourth tile of the window have not been correctly received.</t>
<figure title="Example of a SCHC ACK message, missing tiles" anchor="Fig-Bitmap-
Win"><artwork><![CDATA[
|---- SCHC ACK Header ----|--- Bitmap --|
|-- T --|-M-| 1 |6 5 4 3 2 1 0| (tile #)
+---------+-------+---+---+-------------+
| Rule ID | DTag | W |C=0|1 0 1 0 1 1 1| uncompressed Bitmap
+---------+-------+---+---+-------------+
next L2 Word boundary ->|<-- L2 Word -->|
+---------+-------+---+---+-------------+~~~+
| Rule ID | DTag | W |C=0|1 0 1 0 1 1 1|Pad| transmitted SCHC ACK
+---------+-------+---+---+-------------+~~~+
next L2 Word boundary ->|<-- L2 Word -->|
]]></artwork></figure>
<t><xref target="Fig-Bitmap-lastWin"/> shows an example of a SCHC ACK with FCN r
anging from 6 down to 0, where integrity check has not been performed or has fai
led and the Bitmap indicates that there is no missing tile in that window.</t>
<figure title="Example of a SCHC ACK message, no missing tile" anchor="Fig-Bitma
p-lastWin"><artwork><![CDATA[
|---- SCHC ACK Header ----|--- Bitmap --|
|-- T --|-M-| 1 |6 5 4 3 2 1 0| (tile #)
+---------+-------+---+---+-------------+
| Rule ID | DTag | W |C=0|1 1 1 1 1 1 1| with uncompressed Bitmap
+---------+-------+---+---+-------------+
next L2 Word boundary ->|
+--- ... -+- ... -+---+---+-+ <li>While the bit on the left of the scissors is 1 and belongs to
| Rule ID | DTag | W |C=0|1| transmitted SCHC ACK the Bitmap, keep moving left, then stop.</li>
+--- ... -+- ... -+---+---+-+ <li>Then, while the scissors are not on an L2 Word boundary of the
next L2 Word boundary ->| SCHC ACK message and there is a Bitmap bit on the right of the scissors, keep m
]]></artwork></figure> oving right, then stop.</li>
<li>At this point, cut and drop off any bits to the right of the s
cissors.</li>
</ul>
<t>When one or more bits have effectively been dropped off as a resu
lt of the above algorithm, the SCHC ACK message is a multiple of L2 Words; no pa
dding bits will be appended.</t>
<t>Because the SCHC Fragment sender knows the size of the original B
itmap, it can reconstruct the original Bitmap from the Compressed Bitmap receive
d in the SCHC ACK message.</t>
<t><xref target="Fig-Localbitmap" format="default"/> shows an exampl
e where L2 Words are actually bytes and where the original Bitmap contains 17 bi
ts, the last 15 of which are all set to 1.</t>
<figure anchor="Fig-Localbitmap">
<name>SCHC ACK Header Plus Uncompressed Bitmap</name>
<artwork name="" type="" align="left" alt=""><![CDATA[
|--- SCHC ACK Header ----|-------- Bitmap --------|
|-- T --|-M-| 1 |
+-- ... -+- ... -+---+---+---------------------------------+
| RuleID | DTag | W |C=0|1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1|
+-- ... -+- ... -+---+---+---------------------------------+
next L2 Word boundary ->|]]></artwork>
</figure>
<t><xref target="Fig-transmittedbitmap" format="default"/> shows tha
t the last 14 bits are not sent.</t>
<figure anchor="Fig-transmittedbitmap">
<name>Resulting SCHC ACK Message with Compressed Bitmap</name>
<artwork name="" type="" align="left" alt=""><![CDATA[
|--- SCHC ACK Header ----|CpBmp|
|-- T --|-M-| 1 |
+-- ... -+- ... -+---+---+-----+
| RuleID | DTag | W |C=0|1 0 1|
+-- ... -+- ... -+---+---+-----+
next L2 Word boundary ->|]]></artwork>
</figure>
<t><xref target="Fig-Bitmap-Win" format="default"/> shows an example
of a SCHC ACK with tile indices ranging from 6 down to 0, where the Bitmap indi
cates that the second and the fourth tile of the window have not been correctly
received.</t>
<figure anchor="Fig-Bitmap-Win">
<name>Example of a SCHC ACK Message, Missing Tiles</name>
<artwork name="" type="" align="left" alt=""><![CDATA[
|--- SCHC ACK Header ----|--- Bitmap --|
|-- T --|-M-| 1 |6 5 4 3 2 1 0| (tile #)
+--------+-------+---+---+-------------+
| RuleID | DTag | W |C=0|1 0 1 0 1 1 1| uncompressed Bitmap
+--------+-------+---+---+-------------+
next L2 Word boundary ->|<-- L2 Word --->|
</section> +--------+-------+---+---+-------------+~~~~+
</section> | RuleID | DTag | W |C=0|1 0 1 0 1 1 1|pad.| transmitted SCHC ACK
<section anchor="ACKREQ" title="SCHC ACK REQ format"> +--------+-------+---+---+-------------+~~~~+
next L2 Word boundary ->|<-- L2 Word --->|]]></artwork>
</figure>
<t><xref target="Fig-Bitmap-lastWin" format="default"/> shows an exa
mple of a SCHC ACK with tile indices ranging from 6 down to 0, where integrity c
heck has not been performed or has failed and the Bitmap indicates that there is
no missing tile in that window.</t>
<figure anchor="Fig-Bitmap-lastWin">
<name>Example of a SCHC ACK Message, No Missing Tile</name>
<artwork name="" type="" align="left" alt=""><![CDATA[
|--- SCHC ACK Header ----|--- Bitmap --|
|-- T --|-M-| 1 |6 5 4 3 2 1 0| (tile #)
+--------+-------+---+---+-------------+
| RuleID | DTag | W |C=0|1 1 1 1 1 1 1| with uncompressed Bitmap
+--------+-------+---+---+-------------+
next L2 Word boundary ->|
<t>The SCHC ACK REQ is used by a sender to request a SCHC ACK from the receiver. +-- ... -+- ... -+---+---+-+
Its format is shown in <xref target="Fig-ACKREQ"/>. | RuleID | DTag | W |C=0|1| transmitted SCHC ACK
The DTag field and the W field are OPTIONAL, their presence is specified by each +-- ... -+- ... -+---+---+-+
mode and Profile. next L2 Word boundary ->|]]></artwork>
</figure>
</section>
</section>
<section anchor="ACKREQ" numbered="true" toc="default">
<name>SCHC ACK REQ Format</name>
<t>The SCHC ACK REQ is used by a sender to request a SCHC ACK from the
receiver.
Its format is shown in <xref target="Fig-ACKREQ" format="default"/>.
The DTag field and the W field are <bcp14>OPTIONAL</bcp14>, their presence is sp
ecified by each mode and Profile.
The FCN field is all zero.</t> The FCN field is all zero.</t>
<figure anchor="Fig-ACKREQ">
<figure title="SCHC ACK REQ format" anchor="Fig-ACKREQ"><artwork><![CDATA[ <name>SCHC ACK REQ Format</name>
|---- SCHC ACK REQ Header ----| <artwork name="" type="" align="left" alt=""><![CDATA[
|-- T --|-M-|-- N --| |--- SCHC ACK REQ Header ----|
+-- ... --+- ... -+---+- ... -+~~~~~~~~~~~~~~~~~~~~~ |-- T --|-M-|-- N --|
| Rule ID | DTag | W | 0..0 | padding (as needed) (no payload) +-- ... -+- ... -+---+- ... -+~~~~~~~~~~~~~~~~~~~~~
+-- ... --+- ... -+---+- ... -+~~~~~~~~~~~~~~~~~~~~~ | RuleID | DTag | W | 0..0 | padding (as needed) (no payload)
]]></artwork></figure> +-- ... -+- ... -+---+- ... -+~~~~~~~~~~~~~~~~~~~~~]]></artwork>
</figure>
</section> </section>
<section anchor="SenderAbort" title="SCHC Sender-Abort format"> <section anchor="SenderAbort" numbered="true" toc="default">
<name>SCHC Sender-Abort Format</name>
<t>When a SCHC Fragment sender needs to abort an on-going fragmented SCHC Packet <t>When a SCHC Fragment sender needs to abort an ongoing fragmented SC
transmission, it sends a SCHC Sender-Abort message to the SCHC Fragment receive HC Packet transmission, it sends a SCHC Sender-Abort message to the SCHC Fragmen
r.</t> t receiver.</t>
<t>The SCHC Sender-Abort format is shown in <xref target="Fig-SenderAb
<t>The SCHC Sender-Abort format is shown in <xref target="Fig-SenderAbort"/>. ort" format="default"/>.
The DTag field and the W field are OPTIONAL, their presence is specified by each The DTag field and the W field are <bcp14>OPTIONAL</bcp14>, their presence is sp
mode and Profile. ecified by each mode and Profile.
The FCN field is all ones.</t> The FCN field is all ones.</t>
<figure anchor="Fig-SenderAbort">
<figure title="SCHC Sender-Abort format" anchor="Fig-SenderAbort"><artwork><![CD <name>SCHC Sender-Abort Format</name>
ATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
|---- Sender-Abort Header ----| |--- Sender-Abort Header ----|
|-- T --|-M-|-- N --| |-- T --|-M-|-- N --|
+-- ... --+- ... -+---+- ... -+~~~~~~~~~~~~~~~~~~~~~ +-- ... -+- ... -+---+- ... -+~~~~~~~~~~~~~~~~~~~~~
| Rule ID | DTag | W | 11..1 | padding (as needed) | RuleID | DTag | W | 11..1 | padding (as needed)
+-- ... --+- ... -+---+- ... -+~~~~~~~~~~~~~~~~~~~~~ +-- ... -+- ... -+---+- ... -+~~~~~~~~~~~~~~~~~~~~~]]></artwork>
]]></artwork></figure> </figure>
<t>If the W field is present:</t>
<t>If the W field is present,</t> <ul spacing="normal">
<li>the fragment sender <bcp14>MUST</bcp14> set it to all ones.
<t><list style="symbols"> Other values are RESERVED.</li>
<t>the fragment sender MUST set it to all ones. <li>the fragment receiver <bcp14>MUST</bcp14> check its value.
Other values are RESERVED.</t> If the value is different from all ones, the message <bcp14>MUST</bcp14> be igno
<t>the fragment receiver MUST check its value. red.</li>
If the value is different from all ones, the message MUST be ignored.</t> </ul>
</list></t> <t>The SCHC Sender-Abort <bcp14>MUST NOT</bcp14> be acknowledged.</t>
</section>
<t>The SCHC Sender-Abort MUST NOT be acknowledged.</t> <section anchor="schc-receiver-abort-format" numbered="true" toc="defaul
t">
</section> <name>SCHC Receiver-Abort Format</name>
<section anchor="schc-receiver-abort-format" title="SCHC Receiver-Abort format"> <t>When a SCHC Fragment receiver needs to abort an ongoing fragmented
SCHC Packet transmission, it transmits a SCHC Receiver-Abort message to the SCHC
<t>When a SCHC Fragment receiver needs to abort an on-going fragmented SCHC Pack Fragment sender.</t>
et transmission, it transmits a SCHC Receiver-Abort message to the SCHC Fragment <t>The SCHC Receiver-Abort format is shown in <xref target="Fig-Receiv
sender.</t> erAbort" format="default"/>.
The DTag field and the W field are <bcp14>OPTIONAL</bcp14>, their presence is sp
<t>The SCHC Receiver-Abort format is shown in <xref target="Fig-ReceiverAbort"/> ecified by each mode and Profile.</t>
. <figure anchor="Fig-ReceiverAbort">
The DTag field and the W field are OPTIONAL, their presence is specified by each <name>SCHC Receiver-Abort Format</name>
mode and Profile.</t> <artwork name="" type="" align="left" alt=""><![CDATA[
|-- Receiver-Abort Header ---|
<figure title="SCHC Receiver-Abort format" anchor="Fig-ReceiverAbort"><artwork>< |--- T ---|-M-| 1 |
![CDATA[ +--- ... --+-- ... --+---+---+-+-+-+-+-+-+-+-+-+-+-+
|--- Receiver-Abort Header ---| | RuleID | DTag | W |C=1| 1..1| 1..1 |
|--- T ---|-M-| 1 | +--- ... --+-- ... --+---+---+-+-+-+-+-+-+-+-+-+-+-+
+--- ... ---+-- ... --+---+---+-+-+-+-+-+-+-+-+-+-+-+ next L2 Word boundary ->|<-- L2 Word -->|]]></artwork>
| Rule ID | DTag | W |C=1| 1..1| 1..1 | </figure>
+--- ... ---+-- ... --+---+---+-+-+-+-+-+-+-+-+-+-+-+ <t>If the W field is present:</t>
next L2 Word boundary ->|<-- L2 Word -->| <ul spacing="normal">
]]></artwork></figure> <li>the fragment receiver <bcp14>MUST</bcp14> set it to all ones.
Other values are RESERVED.</li>
<t>If the W field is present,</t> <li>if the value is different from all ones, the fragment sender <bc
p14>MUST</bcp14> ignore the message.</li>
<t><list style="symbols"> </ul>
<t>the fragment receiver MUST set it to all ones. <t>The SCHC Receiver-Abort has the same header as a SCHC ACK message.
Other values are RESERVED.</t> The bits that follow the SCHC Receiver-Abort Header <bcp14>MUST</bcp14> be as fo
<t>if the value is different from all ones, the fragment sender MUST ignore th llows:</t>
e message.</t> <ul spacing="normal">
</list></t> <li>if the Header does not end at an L2 Word boundary, append bits s
et to 1 as needed to reach the next L2 Word boundary.</li>
<t>The SCHC Receiver-Abort has the same header as a SCHC ACK message. <li>append exactly one more L2 Word with bits all set to ones.</li>
The bits that follow the SCHC Receiver-Abort Header MUST be as follows</t> </ul>
<t>Such a bit pattern never occurs in a legitimate SCHC ACK. This is h
<t><list style="symbols"> ow the fragment sender recognizes a SCHC Receiver-Abort.</t>
<t>if the Header does not end at an L2 Word boundary, append bits set to 1 as <t>The SCHC Receiver-Abort <bcp14>MUST NOT</bcp14> be acknowledged.</t
needed to reach the next L2 Word boundary</t> >
<t>append exactly one more L2 Word with bits all set to ones</t> </section>
</list></t> </section>
<section anchor="FragModes" numbered="true" toc="default">
<t>Such a bit pattern never occurs in a legitimate SCHC ACK. This is how the fra <name>SCHC F/R Modes</name>
gment sender recognizes a SCHC Receiver-Abort.</t> <t>This specification includes several SCHC F/R modes that:</t>
<ul spacing="normal">
<t>The SCHC Receiver-Abort MUST NOT be acknowledged.</t> <li>allow for a range of reliability options, such as optional SCHC Fr
agment retransmission.</li>
</section> <li>support various LPWAN characteristics, such as links with variable
</section> MTU or unidirectional links.</li>
<section anchor="FragModes" title="SCHC F/R modes"> </ul>
<t>More modes may be defined in the future.</t>
<t>This specification includes several SCHC F/R modes, which</t> <t><xref target="FragExamples" format="default"/> provides examples of f
ragmentation sessions based on the modes described hereafter.</t>
<t><list style="symbols"> <t><xref target="FSM" format="default"/> provides examples of Finite Sta
<t>allow for a range of reliability options, such as optional SCHC Fragment re te Machines implementing the SCHC F/R modes described hereafter.</t>
transmission</t> <section anchor="No-ACK-subsection" numbered="true" toc="default">
<t>support various LPWAN characteristics, such as links with variable MTU or u <name>No-ACK Mode</name>
nidirectional links.</t> <t>The No-ACK mode has been designed under the assumption that data un
</list></t> it out-of-sequence delivery does not occur between the entity performing fragmen
tation and the entity performing reassembly.
<t>More modes may be defined in the future.</t> This mode supports L2 technologies that have a variable MTU.</t>
<t>In No-ACK mode, there is no communication from the fragment receive
<t><xref target="FragExamples"/> provides examples of fragmentation sessions bas r to the fragment sender.
ed on the modes described hereafter.</t>
<t><xref target="FSM"/> provides examples of Finite State Machines implementing
the SCHC F/R modes described hereafter.</t>
<section anchor="No-ACK-subsection" title="No-ACK mode">
<t>The No-ACK mode has been designed under the assumption that data unit out-of-
sequence delivery does not occur between the entity performing fragmentation and
the entity performing reassembly.
This mode supports LPWAN technologies that have a variable MTU.</t>
<t>In No-ACK mode, there is no communication from the fragment receiver to the f
ragment sender.
The sender transmits all the SCHC Fragments without expecting any acknowledgemen t. The sender transmits all the SCHC Fragments without expecting any acknowledgemen t.
Therefore, No-ACK does not require bidirectional links: unidirectional links are just fine.</t> Therefore, No-ACK does not require bidirectional links: unidirectional links are just fine.</t>
<t>In No-ACK mode, only the All-1 SCHC Fragment is padded as needed. T
<t>In No-ACK mode, only the All-1 SCHC Fragment is padded as needed. The other S he other SCHC Fragments are intrinsically aligned to L2 Words.</t>
CHC Fragments are intrinsically aligned to L2 Words.</t> <t>The tile sizes are not required to be uniform.
<t>The tile sizes are not required to be uniform.
Windows are not used. Windows are not used.
The Retransmission Timer is not used. The Retransmission Timer is not used.
The Attempts counter is not used.</t> The Attempts counter is not used.</t>
<t>Each Profile <bcp14>MUST</bcp14> specify which RuleID value(s) corr
<t>Each Profile MUST specify which Rule ID value(s) correspond to SCHC F/R messa esponds to SCHC F/R messages operating in this mode.</t>
ges operating in this mode.</t> <t>The W field <bcp14>MUST NOT</bcp14> be present in the SCHC F/R mess
ages.
<t>The W field MUST NOT be present in the SCHC F/R messages. SCHC ACK <bcp14>MUST NOT</bcp14> be sent.
SCHC ACK MUST NOT be sent. SCHC ACK REQ <bcp14>MUST NOT</bcp14> be sent.
SCHC ACK REQ MUST NOT be sent. SCHC Sender-Abort <bcp14>MAY</bcp14> be sent.
SCHC Sender-Abort MAY be sent. SCHC Receiver-Abort <bcp14>MUST NOT</bcp14> be sent.</t>
SCHC Receiver-Abort MUST NOT be sent.</t> <t>The value of N (size of the FCN field) is <bcp14>RECOMMENDED</bcp14
> to be 1.</t>
<t>The value of N (size of the FCN field) is RECOMMENDED to be 1.</t> <t>Each Profile, for each RuleID value, <bcp14>MUST</bcp14> define:</t
>
<t>Each Profile, for each Rule ID value, MUST define</t> <ul spacing="normal">
<li>the size of the DTag field,</li>
<t><list style="symbols"> <li>the size and algorithm for the RCS field, and</li>
<t>the size of the DTag field,</t> <li>the expiration time of the Inactivity Timer.</li>
<t>the size and algorithm for the RCS field,</t> </ul>
<t>the expiration time of the Inactivity Timer</t> <t>Each Profile, for each RuleID value, <bcp14>MAY</bcp14> define</t>
</list></t> <ul spacing="normal">
<li>a value of N different from the recommended one, and</li>
<t>Each Profile, for each Rule ID value, MAY define</t> <li>the meaning of values sent in the FCN field, for values differen
t from the All-1 value.</li>
<t><list style="symbols"> </ul>
<t>a value of N different from the recommended one,</t> <t>For each active pair of RuleID and DTag values, the receiver <bcp14
<t>the meaning of values sent in the FCN field, for values different from the >MUST</bcp14> maintain an Inactivity Timer.
All-1 value.</t> If the receiver is under-resourced to do this, it <bcp14>MUST</bcp14> silently d
</list></t> rop the related messages.</t>
<section anchor="sender-behavior" numbered="true" toc="default">
<t>For each active pair of Rule ID and DTag values, the receiver MUST maintain a <name>Sender Behavior</name>
n Inactivity Timer. <t>At the beginning of the fragmentation of a new SCHC Packet, the f
If the receiver is under-resourced to do this, it MUST silently drop the related ragment sender <bcp14>MUST</bcp14> select a RuleID and DTag value pair for this
messages.</t> SCHC Packet.</t>
<t>Each SCHC Fragment <bcp14>MUST</bcp14> contain exactly one tile i
<section anchor="sender-behavior" title="Sender behavior"> n its Payload.
The tile <bcp14>MUST</bcp14> be at least the size of an L2 Word.
<t>At the beginning of the fragmentation of a new SCHC Packet, the fragment send The sender <bcp14>MUST</bcp14> transmit the SCHC Fragments messages in the order
er MUST select a Rule ID and DTag value pair for this SCHC Packet.</t> that the tiles appear in the SCHC Packet.
Except for the last tile of a SCHC Packet, each tile <bcp14>MUST</bcp14> be of a
<t>Each SCHC Fragment MUST contain exactly one tile in its Payload. size
The tile MUST be at least the size of an L2 Word.
The sender MUST transmit the SCHC Fragments messages in the order that the tiles
appear in the SCHC Packet.
Except for the last tile of a SCHC Packet, each tile MUST be of a size
that complements the SCHC Fragment Header so that complements the SCHC Fragment Header so
that the SCHC Fragment is a multiple of L2 Words without the need for padding bi ts. that the SCHC Fragment is a multiple of L2 Words without the need for padding bi ts.
Except for the last one, the SCHC Fragments MUST use the Regular SCHC Fragment f Except for the last one, the SCHC Fragments <bcp14>MUST</bcp14> use the Regular
ormat specified in <xref target="NotLastFrag"/>. SCHC Fragment format specified in <xref target="NotLastFrag" format="default"/>.
The SCHC Fragment that carries the last tile MUST be an All-1 SCHC Fragment, des The SCHC Fragment that carries the last tile <bcp14>MUST</bcp14> be an All-1 SCH
cribed in <xref target="LastFrag"/>.</t> C Fragment, described in <xref target="LastFrag" format="default"/>.</t>
<t>The sender <bcp14>MAY</bcp14> transmit a SCHC Sender-Abort.</t>
<t>The sender MAY transmit a SCHC Sender-Abort.</t> <t><xref target="Fig-NoACKModeSnd" format="default"/> shows an examp
le of a corresponding state machine.</t>
<t><xref target="Fig-NoACKModeSnd"/> shows an example of a corresponding state m </section>
achine.</t> <section anchor="receiver-behavior" numbered="true" toc="default">
<name>Receiver Behavior</name>
</section> <t>Upon receiving each Regular SCHC Fragment:</t>
<section anchor="receiver-behavior" title="Receiver behavior"> <ul spacing="normal">
<li>the receiver <bcp14>MUST</bcp14> reset the Inactivity Timer.</
<t>Upon receiving each Regular SCHC Fragment,</t> li>
<li>the receiver assembles the payloads of the SCHC Fragments.</li
<t><list style="symbols"> >
<t>the receiver MUST reset the Inactivity Timer,</t> </ul>
<t>the receiver assembles the payloads of the SCHC Fragments</t> <t>On receiving an All-1 SCHC Fragment:</t>
</list></t> <ul spacing="normal">
<li>the receiver <bcp14>MUST</bcp14> append the All-1 SCHC Fragmen
<t>On receiving an All-1 SCHC Fragment,</t> t Payload and the padding bits to the
previously received SCHC Fragment Payloads for this SCHC Packet.</li>
<t><list style="symbols"> <li>the receiver <bcp14>MUST</bcp14> perform the integrity check.<
<t>the receiver MUST append the All-1 SCHC Fragment Payload and the padding bi /li>
ts to the <li>if integrity checking fails,
previously received SCHC Fragment Payloads for this SCHC Packet</t> the receiver <bcp14>MUST</bcp14> drop the reassembled SCHC Packet.</li>
<t>the receiver MUST perform the integrity check</t> <li>the reassembly operation concludes.</li>
<t>if integrity checking fails, </ul>
the receiver MUST drop the reassembled SCHC Packet</t> <t>On expiration of the Inactivity Timer,
<t>the reassembly operation concludes.</t> the receiver <bcp14>MUST</bcp14> drop the SCHC Packet being reassembled.</t>
</list></t> <t>On receiving a SCHC Sender-Abort,
the receiver <bcp14>MAY</bcp14> drop the SCHC Packet being reassembled.</t>
<t>On expiration of the Inactivity Timer, <t><xref target="Fig-NoACKModeRcv" format="default"/> shows an examp
the receiver MUST drop the SCHC Packet being reassembled.</t> le of a corresponding state machine.</t>
</section>
<t>On receiving a SCHC Sender-Abort, </section>
the receiver MAY drop the SCHC Packet being reassembled.</t> <section anchor="ACK-Always-subsection" numbered="true" toc="default">
<name>ACK-Always Mode</name>
<t><xref target="Fig-NoACKModeRcv"/> shows an example of a corresponding state m <t>The ACK-Always mode has been designed under the following assumptio
achine.</t> ns:</t>
<ul spacing="normal">
</section> <li>Data unit out-of-sequence delivery does not occur between the en
</section> tity performing fragmentation and the entity performing reassembly,</li>
<section anchor="ACK-Always-subsection" title="ACK-Always mode"> <li>The L2 MTU value does not change while the fragments of a SCHC P
acket are being transmitted, and</li>
<t>The ACK-Always mode has been designed under the following assumptions</t> <li>There is a feedback path from the reassembler to the fragmenter.
See <xref target="AsymLinks" format="default"/> for a discussion on using ACK-Al
<t><list style="symbols"> ways mode on quasi-bidirectional links.</li>
<t>Data unit out-of-sequence delivery does not occur between the entity perfor </ul>
ming fragmentation and the entity performing reassembly</t> <t>In ACK-Always mode, windows are used.
<t>The L2 MTU value does not change while the fragments of a SCHC Packet are b
eing transmitted.</t>
<t>There is a feedback path from the reassembler to the fragmenter.
See <xref target="AsymLinks"/> for a discussion on using ACK-Always mode on quas
i-bidirectional links.</t>
</list></t>
<t>In ACK-Always mode, windows are used.
An acknowledgement, positive or negative, is transmitted by the fragment receive r to the fragment sender at the end of the transmission of each window of SCHC F ragments.</t> An acknowledgement, positive or negative, is transmitted by the fragment receive r to the fragment sender at the end of the transmission of each window of SCHC F ragments.</t>
<t>The tiles are not required to be of uniform size. In ACK-Always mod
<t>The tiles are not required to be of uniform size. In ACK-Always mode, only th e, only the All-1 SCHC Fragment is padded as needed. The other SCHC Fragments ar
e All-1 SCHC Fragment is padded as needed. The other SCHC Fragments are intrinsi e intrinsically aligned to L2 Words.</t>
cally aligned to L2 Words.</t> <t>Briefly, the algorithm is as follows: after a first blind transmiss
ion of all the tiles of a window, the fragment sender iterates retransmitting th
<t>Briefly, the algorithm is as follows: after a first blind transmission of all e tiles that are reported missing until the fragment receiver reports that all t
the tiles of a window, the fragment sender iterates retransmitting the tiles th he tiles belonging to the window have been correctly received or until too many
at are reported missing until the fragment receiver reports that all the tiles b attempts were made.
elonging to the window have been correctly received, or until too many attempts
were made.
The fragment sender only advances to the next window of tiles when it has ascert ained that all the tiles belonging to the current window have been fully and cor rectly received. This results in a per-window lock-step behavior between the sen der and the receiver.</t> The fragment sender only advances to the next window of tiles when it has ascert ained that all the tiles belonging to the current window have been fully and cor rectly received. This results in a per-window lock-step behavior between the sen der and the receiver.</t>
<t>Each Profile <bcp14>MUST</bcp14> specify which RuleID value(s) corr
<t>Each Profile MUST specify which Rule ID value(s) correspond to SCHC F/R messa espond to SCHC F/R messages operating in this mode.</t>
ges operating in this mode.</t> <t>The W field <bcp14>MUST</bcp14> be present and its size M <bcp14>MU
ST</bcp14> be 1 bit.</t>
<t>The W field MUST be present and its size M MUST be 1 bit.</t> <t>Each Profile, for each RuleID value, <bcp14>MUST</bcp14> define:</t
>
<t>Each Profile, for each Rule ID value, MUST define</t> <ul spacing="normal">
<li>the value of N,</li>
<t><list style="symbols"> <li>the value of WINDOW_SIZE, which <bcp14>MUST</bcp14> be strictly
<t>the value of N (size of the FCN field),</t> less than 2^N,</li>
<t>the value of WINDOW_SIZE, which MUST be strictly less than 2^N,</t> <li>the size and algorithm for the RCS field,</li>
<t>the size and algorithm for the RCS field,</t> <li>the value of T,</li>
<t>the size of the DTag field,</t> <li>the value of MAX_ACK_REQUESTS,</li>
<t>the value of MAX_ACK_REQUESTS,</t> <li>the expiration time of the Retransmission Timer, and</li>
<t>the expiration time of the Retransmission Timer</t> <li>the expiration time of the Inactivity Timer.</li>
<t>the expiration time of the Inactivity Timer</t> </ul>
</list></t> <t>For each active pair of RuleID and DTag values, the sender <bcp14>M
UST</bcp14> maintain:</t>
<t>For each active pair of Rule ID and DTag values, the sender MUST maintain</t> <ul spacing="normal">
<li>one Attempts counter</li>
<t><list style="symbols"> <li>one Retransmission Timer</li>
<t>one Attempts counter</t> </ul>
<t>one Retransmission Timer</t> <t>For each active pair of RuleID and DTag values, the receiver <bcp14
</list></t> >MUST</bcp14> maintain</t>
<ul spacing="normal">
<t>For each active pair of Rule ID and DTag values, the receiver MUST maintain</ <li>one Inactivity Timer, and</li>
t> <li>one Attempts counter.</li>
</ul>
<t><list style="symbols"> <section anchor="sender-behavior-1" numbered="true" toc="default">
<t>one Inactivity Timer</t> <name>Sender Behavior</name>
<t>one Attempts counter</t> <t>At the beginning of the fragmentation of a new SCHC Packet, the f
</list></t> ragment sender <bcp14>MUST</bcp14> select a RuleID and DTag value pair for this
SCHC Packet.</t>
<section anchor="sender-behavior-1" title="Sender behavior"> <t>Each SCHC Fragment <bcp14>MUST</bcp14> contain exactly one tile i
n its Payload.
<t>At the beginning of the fragmentation of a new SCHC Packet, the fragment send All tiles with the index 0, as well as the last tile, <bcp14>MUST</bcp14> be at
er MUST select a Rule ID and DTag value pair for this SCHC Packet.</t> least the size of an L2 Word.</t>
<t>In all SCHC Fragment messages, the W field <bcp14>MUST</bcp14> be
<t>Each SCHC Fragment MUST contain exactly one tile in its Payload. filled with the LSB of the window number that the sender is currently processin
All tiles with the index 0, as well as the last tile, MUST be at least the size g.</t>
of an L2 Word.</t> <t>For a SCHC Fragment that carries a tile other than the last one o
f the SCHC Packet:</t>
<t>In all SCHC Fragment messages, the W field MUST be filled with the least sign <ul spacing="normal">
ificant bit of the window number that the sender is currently processing.</t> <li>the Fragment <bcp14>MUST</bcp14> be of the Regular type specif
ied in <xref target="NotLastFrag" format="default"/>.</li>
<t>For a SCHC Fragment that carries a tile other than the last one of the SCHC P <li>the FCN field <bcp14>MUST</bcp14> contain the tile index.</li>
acket,</t> <li>each tile <bcp14>MUST</bcp14> be of a size
<t><list style="symbols">
<t>the Fragment MUST be of the Regular type specified in <xref target="NotLast
Frag"/></t>
<t>the FCN field MUST contain the tile index</t>
<t>each tile MUST be of a size
that complements the SCHC Fragment Header so that complements the SCHC Fragment Header so
that the SCHC Fragment is a multiple of L2 Words without the need for padding bi that the SCHC Fragment is a multiple of L2 Words without the need for padding bi
ts.</t> ts.</li>
</list></t> </ul>
<t>The SCHC Fragment that carries the last tile <bcp14>MUST</bcp14>
<t>The SCHC Fragment that carries the last tile MUST be an All-1 SCHC Fragment, be an All-1 SCHC Fragment, described in <xref target="LastFrag" format="default"
described in <xref target="LastFrag"/>.</t> />.</t>
<t>The fragment sender <bcp14>MUST</bcp14> start by transmitting the
<t>The fragment sender MUST start by transmitting the window numbered 0.</t> window numbered 0.</t>
<t>All message receptions being discussed in the rest of this sectio
<t>All message receptions being discussed in the rest of this section are to be n are to be understood as
understood as "matching the RuleID and DTag pair being processed", even if not spelled out, fo
“matching the RuleID and DTag pair being processed”, even if not spelled out, fo r brevity.</t>
r brevity.</t> <t>The sender starts by a "blind transmission" phase, in which it <b
cp14>MUST</bcp14> transmit all the tiles composing the window, in decreasing til
<t>The sender starts by a “blind transmission” phase, in which it MUST transmit e index order.</t>
all the tiles composing the window, in decreasing tile index order.</t> <t>Then, it enters a "retransmission phase" in which
it <bcp14>MUST</bcp14> initialize an Attempts counter to 0,
<t>Then, it enters a “retransmission phase” in which it <bcp14>MUST</bcp14> start a Retransmission Timer
it MUST initialize an Attempts counter to 0, and it <bcp14>MUST</bcp14> await a SCHC ACK. </t>
it MUST start a Retransmission Timer <ul spacing="normal">
and it MUST await a SCHC ACK. Then,</t> <li>
<t>Then, upon receiving a SCHC ACK:</t>
<t><list style="symbols"> <ul spacing="normal">
<t>upon receiving a SCHC ACK, <list style="symbols"> <li>if the SCHC ACK indicates that some tiles are missing at t
<t>if the SCHC ACK indicates that some tiles are missing at the receiver, he receiver, then
then the sender <bcp14>MUST</bcp14> transmit all the tiles that have been reported mi
the sender MUST transmit all the tiles that have been reported missing, ssing,
it MUST increment Attempts, it <bcp14>MUST</bcp14> increment Attempts,
it MUST reset the Retransmission Timer it <bcp14>MUST</bcp14> reset the Retransmission Timer,
and MUST await the next SCHC ACK.</t> and <bcp14>MUST</bcp14> await the next SCHC ACK.</li>
<t>if the current window is not the last one and the SCHC ACK indicates th <li>if the current window is not the last one and the SCHC ACK
at all tiles were correctly received, indicates that all tiles were correctly received,
the sender MUST stop the Retransmission Timer, the sender <bcp14>MUST</bcp14> stop the Retransmission Timer,
it MUST advance to the next fragmentation window it <bcp14>MUST</bcp14> advance to the next fragmentation window,
and it MUST start a blind transmission phase as described above.</t> and it <bcp14>MUST</bcp14> start a blind transmission phase as described above.<
<t>if the current window is the last one and the SCHC ACK indicates that m /li>
ore tiles were received than the sender sent, <li>if the current window is the last one and the SCHC ACK ind
the fragment sender MUST send a SCHC Sender-Abort, icates that more tiles were received than the sender sent,
and it MAY exit with an error condition.</t> the fragment sender <bcp14>MUST</bcp14> send a SCHC Sender-Abort,
<t>if the current window is the last one and the SCHC ACK indicates that a and it <bcp14>MAY</bcp14> exit with an error condition.</li>
ll tiles were correctly received yet integrity check was a failure, <li>if the current window is the last one and the
the fragment sender MUST send a SCHC Sender-Abort, SCHC ACK indicates that all tiles were correctly
and it MAY exit with an error condition.</t> received, yet the integrity check was a failure,
<t>if the current window is the last one and the SCHC ACK indicates that i the fragment sender <bcp14>MUST</bcp14> send a SCHC Sender-Abort,
ntegrity checking was successful, and it <bcp14>MAY</bcp14> exit with an error condition.</li>
the sender exits successfully.</t> <li>if the current window is the last one and the SCHC ACK ind
</list></t> icates that integrity checking was successful,
<t>on Retransmission Timer expiration, <list style="symbols"> the sender exits successfully.</li>
<t>if Attempts is strictly less that MAX_ACK_REQUESTS, </ul>
the fragment sender MUST send a SCHC ACK REQ </li>
and MUST increment the Attempts counter.</t> <li>
<t>otherwise <t>on Retransmission Timer expiration: </t>
the fragment sender MUST send a SCHC Sender-Abort, <ul spacing="normal">
and it MAY exit with an error condition.</t> <li>if Attempts is strictly less that MAX_ACK_REQUESTS,
</list></t> the fragment sender <bcp14>MUST</bcp14> send a SCHC ACK REQ
</list></t> and <bcp14>MUST</bcp14> increment the Attempts counter.</li>
<li>otherwise,
<t>At any time,</t> the fragment sender <bcp14>MUST</bcp14> send a SCHC Sender-Abort,
and it <bcp14>MAY</bcp14> exit with an error condition.</li>
<t><list style="symbols"> </ul>
<t>on receiving a SCHC Receiver-Abort, the fragment sender MAY exit with an er </li>
ror condition.</t> </ul>
<t>on receiving a SCHC ACK that bears a W value different from the W value tha <t>At any time:</t>
t it currently uses, the fragment sender MUST silently discard and ignore that S <ul spacing="normal">
CHC ACK.</t> <li>on receiving a SCHC Receiver-Abort, the fragment sender <bcp14
</list></t> >MAY</bcp14> exit with an error condition.</li>
<li>on receiving a SCHC ACK that bears a W value different from th
<t><xref target="Fig-ACKAlwaysSnd"/> shows an example of a corresponding state m e W value that it currently uses, the fragment sender <bcp14>MUST</bcp14> silent
achine.</t> ly discard and ignore that SCHC ACK.</li>
</ul>
</section> <t><xref target="Fig-ACKAlwaysSnd" format="default"/> shows an examp
<section anchor="receiver-behavior-1" title="Receiver behavior"> le of a corresponding state machine.</t>
</section>
<t>On receiving a SCHC Fragment with a Rule ID and DTag pair not being processed <section anchor="receiver-behavior-1" numbered="true" toc="default">
at that time</t> <name>Receiver Behavior</name>
<t>On receiving a SCHC Fragment with a RuleID and DTag pair not bein
<t><list style="symbols"> g processed at that time:</t>
<t>the receiver SHOULD check if the DTag value has not recently been used for <ul spacing="normal">
that Rule ID value, <li>the receiver <bcp14>SHOULD</bcp14> check if 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 fra gmented SCHC Packet transmission. thereby ensuring that the received SCHC Fragment is not a remnant of a prior fra gmented SCHC Packet transmission.
The initial value of the Inactivity Timer is the RECOMMENDED lifetime for the DT The initial value of the Inactivity Timer is the <bcp14>RECOMMENDED</bcp14> life
ag value at the receiver. time for the DTag value at the receiver.
If the SCHC Fragment is determined to be such a remnant, the receiver MAY silent If the SCHC Fragment is determined to be such a remnant, the receiver <bcp14>MAY
ly ignore it and discard it.</t> </bcp14> silently ignore it and discard it.</li>
<t>the receiver MUST start a process to assemble a new SCHC Packet with that R <li>the receiver <bcp14>MUST</bcp14> start a process to assemble a
ule ID and DTag value pair.</t> new SCHC Packet with that RuleID and DTag value pair.</li>
<t>the receiver MUST start an Inactivity Timer for that RuleID and DTag pair. <li>the receiver <bcp14>MUST</bcp14> start an Inactivity Timer for
It MUST initialize an Attempts counter to 0 for that RuleID and DTag pair. that RuleID and DTag pair.
It MUST initialize a window counter to 0. It <bcp14>MUST</bcp14> initialize an Attempts counter to 0 for that RuleID and D
If the receiver is under-resourced to do this, it MUST respond to the sender wit Tag pair.
h a SCHC Receiver Abort.</t> It <bcp14>MUST</bcp14> initialize a window counter to 0.
</list></t> If the receiver is under-resourced to do this, it <bcp14>MUST</bcp14> respond to
the sender with a SCHC Receiver-Abort.</li>
<t>In the rest of this section, “local W bit” means the least significant bit of </ul>
the window counter of the receiver.</t> <t>In the rest of this section, "local W bit" means the least signif
icant bit of the window counter of the receiver.</t>
<t>On reception of any SCHC F/R message for the RuleID and DTag pair being proce <t>On reception of any SCHC F/R message for the RuleID and DTag pair
ssed, the receiver MUST reset the Inactivity Timer pertaining to that RuleID and being processed, the receiver <bcp14>MUST</bcp14> reset the Inactivity Timer pe
DTag pair.</t> rtaining to that RuleID and DTag pair.</t>
<t>All message receptions being discussed in the rest of this sectio
<t>All message receptions being discussed in the rest of this section are to be n are to be understood as
understood as "matching the RuleID and DTag pair being processed", even if not spelled out, fo
“matching the RuleID and DTag pair being processed”, even if not spelled out, fo r brevity.</t>
r brevity.</t> <t>The receiver <bcp14>MUST</bcp14> first initialize an empty Bitmap
for the first window then
<t>The receiver MUST first initialize an empty Bitmap for the first window, then enter an "acceptance phase", in which:</t>
enter an “acceptance phase”, in which</t> <ul spacing="normal">
<li>on receiving a SCHC Fragment or a SCHC ACK REQ, either one hav
<t><list style="symbols"> ing the W bit different from the local W bit,
<t>on receiving a SCHC Fragment or a SCHC ACK REQ, either one having the W bit the receiver <bcp14>MUST</bcp14> silently ignore and discard that message.</li>
different from the local W bit, <li>on receiving a SCHC ACK REQ with the W bit equal to the local
the receiver MUST silently ignore and discard that message.</t> W bit,
<t>on receiving a SCHC ACK REQ with the W bit equal to the local W bit, the receiver <bcp14>MUST</bcp14> send a SCHC ACK for this window.</li>
the receiver MUST send a SCHC ACK for this window.</t> <li>
<t>on receiving a SCHC Fragment with the W bit equal to the local W bit, <t>on receiving a SCHC Fragment with the W bit equal to the loca
the receiver MUST assemble the received tile based on the window counter and on l W bit,
the FCN field in the SCHC Fragment the receiver <bcp14>MUST</bcp14> assemble the received tile based on the window
and it MUST update the Bitmap. counter and on the FCN field in the SCHC Fragment,
<list style="symbols"> and it <bcp14>MUST</bcp14> update the Bitmap.
<t>if the SCHC Fragment received is an All-0 SCHC Fragment, </t>
<ul spacing="normal">
<li>if the SCHC Fragment received is an All-0 SCHC Fragment,
the current window is determined to be a not-last window, the current window is determined to be a not-last window,
the receiver MUST send a SCHC ACK for this window the receiver <bcp14>MUST</bcp14> send a SCHC ACK for this window
and it MUST enter the “retransmission phase” for this window.</t> and it <bcp14>MUST</bcp14> enter the "retransmission phase" for this window.</li
<t>if the SCHC Fragment received is an All-1 SCHC Fragment, >
the padding bits of the All-1 SCHC Fragment MUST be assembled after the received <li>
tile,
the current window is determined to be the last window,
the receiver MUST perform the integrity check
and it MUST send a SCHC ACK for this window. Then, <list style="symbols">
<t>If the integrity check indicates that the full SCHC Packet has been
correctly reassembled,
the receiver MUST enter the “clean-up phase” for this window.</t>
<t>If the integrity check indicates that the full SCHC Packet has not
been correctly reassembled,
the receiver enters the “retransmission phase” for this window.</t>
</list></t>
</list></t>
</list></t>
<t>In the “retransmission phase”:</t>
<t><list style="symbols"> <t>if the SCHC Fragment received is an All-1 SCHC Fragment,
<t>if the window is a not-last window <list style="symbols"> the current window is determined to be the last window,
<t>on receiving a SCHC Fragment that is not All-0 or All-1 and that has a the padding bits of the All-1 SCHC Fragment <bcp14>MUST</bcp14> be assembled aft
W bit different from the local W bit, er the received tile,
the receiver MUST increment its window counter and allocate a fresh Bitmap, the receiver <bcp14>MUST</bcp14> perform the integrity check
it MUST assemble the tile received and update the Bitmap and it <bcp14>MUST</bcp14> send a SCHC ACK for this window. Then: </t>
and it MUST enter the “acceptance phase” for that new window.</t> <ul spacing="normal">
<t>on receiving a SCHC ACK REQ with a W bit different from the local W bit <li>If the integrity check indicates that the full SCHC Pa
, cket has been correctly reassembled,
the receiver MUST increment its window counter and allocate a fresh Bitmap, the receiver <bcp14>MUST</bcp14> enter the "clean-up phase" for this window.</li
it MUST send a SCHC ACK for that new window >
and it MUST enter the “acceptance phase” for that new window.</t> <li>If the integrity check indicates that the full SCHC Pa
<t>on receiving a SCHC All-0 Fragment with a W bit different from the loca cket has not been correctly reassembled,
l W bit, the receiver enters the "retransmission phase" for this window.</li>
the receiver MUST increment its window counter and allocate a fresh Bitmap, </ul>
it MUST assemble the tile received and update the Bitmap, </li>
it MUST send a SCHC ACK for that new window </ul>
and it MUST stay in the “retransmission phase” for that new window.</t> </li>
<t>on receiving a SCHC All-1 Fragment with a W bit different from the loca </ul>
l W bit, <t>In the "retransmission phase":</t>
the receiver MUST increment its window counter and allocate a fresh Bitmap, <ul spacing="normal">
it MUST assemble the tile received, <li>
including the padding bits, <t>if the window is a not-last window:</t>
it MUST update the Bitmap and perform the integrity check, <ul spacing="normal">
it MUST send a SCHC ACK for the new window, <li>on receiving a SCHC Fragment that is not All-0 or All-1 an
which is determined to be the last window. Then, <list style="symbols"> d that has a W bit different from the local W bit,
<t>If the integrity check indicates that the full SCHC Packet has been the receiver <bcp14>MUST</bcp14> increment its window counter and allocate a fre
correctly reassembled, sh Bitmap,
the receiver MUST enter the “clean-up phase” for that new window.</t> it <bcp14>MUST</bcp14> assemble the tile received and update the Bitmap,
<t>If the integrity check indicates that the full SCHC Packet has not and it <bcp14>MUST</bcp14> enter the "acceptance phase" for that new window.</li
been correctly reassembled, >
the receiver enters the “retransmission phase” for that new window.</t> <li>on receiving a SCHC ACK REQ with a W bit different from th
</list></t> e local W bit,
<t>on receiving a SCHC Fragment with a W bit equal to the local W bit, the receiver <bcp14>MUST</bcp14> increment its window counter and allocate a fre
<list style="symbols"> sh Bitmap,
<t>if the SCHC Fragment received is an All-1 SCHC Fragment, it <bcp14>MUST</bcp14> send a SCHC ACK for that new window,
the receiver MUST silently ignore it and discard it.</t> and it <bcp14>MUST</bcp14> enter the "acceptance phase" for that new window.</li
<t>otherwise, >
the receiver MUST assemble the tile received and update the Bitmap. <li>on receiving a SCHC All-0 Fragment with a W bit different
If the Bitmap becomes fully populated with 1’s or if the SCHC Fragment is an All from the local W bit,
-0, the receiver <bcp14>MUST</bcp14> increment its window counter and allocate a fre
the receiver MUST send a SCHC ACK for this window.</t> sh Bitmap,
</list></t> it <bcp14>MUST</bcp14> assemble the tile received and update the Bitmap,
<t>on receiving a SCHC ACK REQ with the W bit equal to the local W bit, it <bcp14>MUST</bcp14> send a SCHC ACK for that new window,
the receiver MUST send a SCHC ACK for this window.</t> and it <bcp14>MUST</bcp14> stay in the "retransmission phase" for that new windo
</list></t> w.</li>
<t>if the window is the last window <list style="symbols"> <li>
<t>on receiving a SCHC Fragment or a SCHC ACK REQ, either one having a W b <t>on receiving a SCHC All-1 Fragment with a W bit different
it different from the local W bit, from the local W bit,
the receiver MUST silently ignore and discard that message.</t> the receiver <bcp14>MUST</bcp14> increment its window counter and allocate a fre
<t>on receiving a SCHC ACK REQ with the W bit equal to the local W bit, sh Bitmap;
the receiver MUST send a SCHC ACK for this window.</t> it <bcp14>MUST</bcp14> assemble the tile received,
<t>on receiving a SCHC Fragment with a W bit equal to the local W bit, including the padding bits;
<list style="symbols"> it <bcp14>MUST</bcp14> update the Bitmap and perform the integrity check;
<t>if the SCHC Fragment received is an All-0 SCHC Fragment, it <bcp14>MUST</bcp14> send a SCHC ACK for the new window,
the receiver MUST silently ignore it and discard it.</t> which is determined to be the last window. Then:</t>
<t>otherwise, the receiver MUST update the Bitmap <ul spacing="normal">
and it MUST assemble the tile received. <li>If the integrity check indicates that the full SCHC Pa
cket has been correctly reassembled,
the receiver <bcp14>MUST</bcp14> enter the "clean-up phase" for that new window.
</li>
<li>If the integrity check indicates that the full SCHC Pa
cket has not been correctly reassembled,
the receiver enters the "retransmission phase" for that new window.</li>
</ul>
</li>
<li>
<t>on receiving a SCHC Fragment with a W bit equal to the lo
cal W bit:</t>
<ul spacing="normal">
<li>if the SCHC Fragment received is an All-1 SCHC Fragmen
t,
the receiver <bcp14>MUST</bcp14> silently ignore it and discard it.</li>
<li>otherwise,
the receiver <bcp14>MUST</bcp14> assemble the tile received and update the Bitma
p.
If the Bitmap becomes fully populated with 1's or if the SCHC Fragment is an All
-0,
the receiver <bcp14>MUST</bcp14> send a SCHC ACK for this window.</li>
</ul>
</li>
<li>on receiving a SCHC ACK REQ with the W bit equal to the lo
cal W bit,
the receiver <bcp14>MUST</bcp14> send a SCHC ACK for this window.</li>
</ul>
</li>
<li>
<t>if the window is the last window:</t>
<ul spacing="normal">
<li>on receiving a SCHC Fragment or a SCHC ACK REQ, either one
having a W bit different from the local W bit,
the receiver <bcp14>MUST</bcp14> silently ignore and discard that message.</li>
<li>on receiving a SCHC ACK REQ with the W bit equal to the lo
cal W bit,
the receiver <bcp14>MUST</bcp14> send a SCHC ACK for this window.</li>
<li>
<t>on receiving a SCHC Fragment with a W bit equal to the lo
cal W bit:</t>
<ul spacing="normal">
<li>if the SCHC Fragment received is an All-0 SCHC Fragmen
t,
the receiver <bcp14>MUST</bcp14> silently ignore it and discard it.</li>
<li>
<t>otherwise, the receiver <bcp14>MUST</bcp14> update th
e Bitmap,
and it <bcp14>MUST</bcp14> assemble the tile received.
If the SCHC Fragment received is an All-1 SCHC Fragment, If the SCHC Fragment received is an All-1 SCHC Fragment,
the receiver MUST assemble the padding bits of the All-1 SCHC Fragment after the the receiver <bcp14>MUST</bcp14> assemble the padding bits of the All-1 SCHC Fra
received tile, gment after the received tile,
it MUST perform the integrity check and <list style="symbols"> it <bcp14>MUST</bcp14> perform the integrity check and:</t>
<t>if the integrity check indicates that the full SCHC Packet has <ul spacing="normal">
been correctly reassembled, <li>if the integrity check indicates that the full SCH
the receiver MUST send a SCHC ACK C Packet has been correctly reassembled,
and it enters the “clean-up phase”.</t> the receiver <bcp14>MUST</bcp14> send a SCHC ACK
<t>if the integrity check indicates that the full SCHC Packet has and it enters the "clean-up phase".</li>
not been correctly reassembled, <li>
<list style="symbols"> <t>if the integrity check indicates that the full SC
<t>if the SCHC Fragment received was an All-1 SCHC Fragment, t HC Packet has not been correctly reassembled:
he receiver MUST send a SCHC ACK for this window.</t> </t>
</list></t> <ul spacing="normal">
</list></t> <li>if the SCHC Fragment received was an All-1 SCH
</list></t> C Fragment, the receiver <bcp14>MUST</bcp14> send a SCHC ACK for this window.</l
</list></t> i>
</list></t> </ul>
</li>
<t>In the “clean-up phase”:</t> </ul>
</li>
<t><list style="symbols"> </ul>
<t>On receiving an All-1 SCHC Fragment or a SCHC ACK REQ, either one having th </li>
e W bit equal to the local W bit, the receiver MUST send a SCHC ACK.</t> </ul>
<t>Any other SCHC Fragment received MUST be silently ignored and discarded.</t </li>
> </ul>
</list></t> <t>In the "clean-up phase":</t>
<ul spacing="normal">
<t>At any time, <li>On receiving an All-1 SCHC Fragment or a SCHC ACK REQ, either
one having the W bit equal to the local W bit, the receiver <bcp14>MUST</bcp14>
send a SCHC ACK.</li>
<li>Any other SCHC Fragment received <bcp14>MUST</bcp14> be silent
ly ignored and discarded.</li>
</ul>
<t>At any time,
on sending a SCHC ACK, on sending a SCHC ACK,
the receiver MUST increment the Attempts counter.</t> the receiver <bcp14>MUST</bcp14> increment the Attempts counter.</t>
<t>At any time,
<t>At any time,
on incrementing its window counter, on incrementing its window counter,
the receiver MUST reset the Attempts counter.</t> the receiver <bcp14>MUST</bcp14> reset the Attempts counter.</t>
<t>At any time,
<t>At any time,
on expiration of the Inactivity Timer, on expiration of the Inactivity Timer,
on receiving a SCHC Sender-Abort or on receiving a SCHC Sender-Abort or
when Attempts reaches MAX_ACK_REQUESTS, when Attempts reaches MAX_ACK_REQUESTS,
the receiver MUST send a SCHC Receiver-Abort the receiver <bcp14>MUST</bcp14> send a SCHC Receiver-Abort,
and it MAY exit the receive process for that SCHC Packet.</t> and it <bcp14>MAY</bcp14> exit the receive process for that SCHC Packet.</t>
<t><xref target="Fig-ACKAlwaysRcv" format="default"/> shows an examp
<t><xref target="Fig-ACKAlwaysRcv"/> shows an example of a corresponding state m le of a corresponding state machine.</t>
achine.</t> </section>
</section>
</section> <section anchor="ACK-on-Error-subsection" numbered="true" toc="default">
</section> <name>ACK-on-Error Mode</name>
<section anchor="ACK-on-Error-subsection" title="ACK-on-Error mode"> <t>The ACK-on-Error mode supports L2 technologies that have variable M
TU and out-of-order delivery.
<t>The ACK-on-Error mode supports LPWAN technologies that have variable MTU and It requires an L2 that provides a feedback path from the reassembler to the frag
out-of-order delivery. menter.
It operates with links that provide a feedback path from the reassembler to the See <xref target="AsymLinks" format="default"/> for a discussion on using ACK-on
fragmenter. -Error mode on quasi-bidirectional links.</t>
See <xref target="AsymLinks"/> for a discussion on using ACK-on-Error mode on qu <t>In ACK-on-Error mode, windows are used.</t>
asi-bidirectional links.</t> <t>All tiles except the last one and the penultimate one <bcp14>MUST</
bcp14> be of equal size, hereafter called "regular".
<t>In ACK-on-Error mode, windows are used.</t> The size of the last tile <bcp14>MUST</bcp14> be smaller than or equal to the re
gular tile size.
<t>All tiles, but the last one and the penultimate one, MUST be of equal size, h Regarding the penultimate tile, a Profile <bcp14>MUST</bcp14> pick one of the fo
ereafter called “regular”. llowing two options:</t>
The size of the last tile MUST be smaller than or equal to the regular tile size <ul spacing="normal">
. <li>The penultimate tile size <bcp14>MUST</bcp14> be the
Regarding the penultimate tile, a Profile MUST pick one of the following two opt regular tile size, or</li>
ions:</t> <li>the penultimate tile size <bcp14>MUST</bcp14> be either the regu
lar tile size or the regular tile size minus one L2 Word.</li>
<t><list style="symbols"> </ul>
<t>The penultimate tile size MUST be the regular tile size</t> <t>A SCHC Fragment message carries one or several contiguous tiles, wh
<t>or the penultimate tile size MUST be either the regular tile size or the re ich may span multiple windows.
gular tile size minus one L2 Word.</t>
</list></t>
<t>A SCHC Fragment message carries one or several contiguous tiles, which may sp
an multiple windows.
A SCHC ACK reports on the reception of exactly one window of tiles.</t> A SCHC ACK reports on the reception of exactly one window of tiles.</t>
<t>See <xref target="Fig-TilesACKonError" format="default"/> for an ex
ample.</t>
<figure anchor="Fig-TilesACKonError">
<name>SCHC Packet Fragmented in Tiles, ACK-on-Error Mode</name>
<artwork name="" type="" align="left" alt=""><![CDATA[
+---------------------------------------------...-----------+
| SCHC Packet |
+---------------------------------------------...-----------+
<t>See <xref target="Fig-TilesACKonError"/> for an example.</t> Tile# | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 | 4 | | 0 | 4 |3|
Window# |-------- 0 --------|-------- 1 --------|- 2 ... 27 -|- 28-|
<figure title="a SCHC Packet fragmented in tiles, ACK-on-Error mode" anchor="Fig
-TilesACKonError"><artwork><![CDATA[
+---------------------------------------------...-----------+
| 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>The W field is wide enough that it unambiguously represents an absolute windo SCHC Fragment msg |-----------|]]></artwork>
w number. </figure>
<t>The W field is wide enough that it unambiguously represents an abso
lute window number.
The fragment receiver sends SCHC ACKs to the fragment sender about windows for w hich tiles are missing. The fragment receiver sends SCHC ACKs to the fragment sender about windows for w hich tiles are missing.
No SCHC ACK is sent by the fragment receiver for windows that it knows have been fully received.</t> No SCHC ACK is sent by the fragment receiver for windows that it knows have been fully received.</t>
<t>The fragment sender retransmits SCHC Fragments for tiles that are r
<t>The fragment sender retransmits SCHC Fragments for tiles that are reported mi eported missing.
ssing.
It can advance to next windows even before it has ascertained that all tiles bel onging to previous windows have been correctly received, It can advance to next windows even before it has ascertained that all tiles bel onging to previous windows have been correctly received,
and can still later retransmit SCHC Fragments with tiles belonging to previous w indows. and it can still later retransmit SCHC Fragments with tiles belonging to previou s windows.
Therefore, the sender and the receiver may operate in a decoupled fashion. Therefore, the sender and the receiver may operate in a decoupled fashion.
The fragmented SCHC Packet transmission concludes when</t> The fragmented SCHC Packet transmission concludes when:</t>
<ul spacing="normal">
<t><list style="symbols"> <li>integrity checking shows that the fragmented SCHC Packet has bee
<t>integrity checking shows that the fragmented SCHC Packet has been correctly n correctly reassembled at the receive end,
reassembled at the receive end, and this information has been conveyed back to the sender, or</li>
and this information has been conveyed back to the sender,</t> <li>too many retransmission attempts were made, or</li>
<t>or too many retransmission attempts were made,</t> <li>the receiver determines that the transmission of this fragmented
<t>or the receiver determines that the transmission of this fragmented SCHC Pa SCHC Packet has been inactive for too long.</li>
cket has been inactive for too long.</t> </ul>
</list></t> <t>Each Profile <bcp14>MUST</bcp14> specify which RuleID value(s) corr
esponds to SCHC F/R messages operating in this mode.</t>
<t>Each Profile MUST specify which Rule ID value(s) correspond to SCHC F/R messa <t>The W field <bcp14>MUST</bcp14> be present in the SCHC F/R messages
ges operating in this mode.</t> .</t>
<t>Each Profile, for each RuleID value, <bcp14>MUST</bcp14> define:</t
<t>The W field MUST be present in the SCHC F/R messages.</t> >
<ul spacing="normal">
<t>Each Profile, for each Rule ID value, MUST define</t> <li>the tile size (a tile does not need to be multiple of an L2 Word
, but it <bcp14>MUST</bcp14> be at least the size of an L2 Word),</li>
<t><list style="symbols"> <li>the value of M,</li>
<t>the tile size (a tile does not need to be multiple of an L2 Word, but it MU <li>the value of N,</li>
ST be at least the size of an L2 Word)</t> <li>the value of WINDOW_SIZE, which <bcp14>MUST</bcp14> be strictly
<t>the value of M (size of the W field),</t> less than 2^N,</li>
<t>the value of N (size of the FCN field),</t> <li>the size and algorithm for the RCS field,</li>
<t>the value of WINDOW_SIZE, which MUST be strictly less than 2^N,</t> <li>the value of T,</li>
<t>the size and algorithm for the RCS field,</t> <li>the value of MAX_ACK_REQUESTS,</li>
<t>the size of the DTag field,</t> <li>the expiration time of the Retransmission Timer,</li>
<t>the value of MAX_ACK_REQUESTS,</t> <li>the expiration time of the Inactivity Timer,</li>
<t>the expiration time of the Retransmission Timer</t> <li>if the last tile is carried in a Regular SCHC Fragment or an All
<t>the expiration time of the Inactivity Timer</t> -1 SCHC Fragment (see <xref target="ACK-on-Error-sender" format="default"/>), an
<t>whether the last tile is carried in a Regular SCHC Fragment or an All-1 SCH d</li>
C Fragment (see <xref target="ACK-on-Error-sender"/>)</t> <li>if the penultimate tile <bcp14>MAY</bcp14> be one L2 Word smalle
<t>if the penultimate tile MAY be one L2 Word smaller than the regular tile si r than the regular tile size. In this case, the regular tile size <bcp14>MUST</b
ze. In this case, the regular tile size MUST be at least twice the L2 Word size. cp14> be at least twice the L2 Word size.</li>
</t> </ul>
</list></t> <t>For each active pair of RuleID and DTag values, the sender <bcp14>M
UST</bcp14> maintain:</t>
<t>For each active pair of Rule ID and DTag values, the sender MUST maintain</t> <ul spacing="normal">
<li>one Attempts counter, and</li>
<t><list style="symbols"> <li>one Retransmission Timer.</li>
<t>one Attempts counter</t> </ul>
<t>one Retransmission Timer</t> <t>For each active pair of RuleID and DTag values, the receiver <bcp14
</list></t> >MUST</bcp14> maintain:</t>
<ul spacing="normal">
<t>For each active pair of Rule ID and DTag values, the receiver MUST maintain</ <li>one Inactivity Timer, and</li>
t> <li>one Attempts counter.</li>
</ul>
<t><list style="symbols"> <section anchor="ACK-on-Error-sender" numbered="true" toc="default">
<t>one Inactivity Timer</t> <name>Sender Behavior</name>
<t>one Attempts counter</t> <t>At the beginning of the fragmentation of a new SCHC Packet:</t>
</list></t> <ul spacing="normal">
<li>the fragment sender <bcp14>MUST</bcp14> select a RuleID and DT
<section anchor="ACK-on-Error-sender" title="Sender behavior"> ag value pair for this SCHC Packet.
A Rule <bcp14>MUST NOT</bcp14> be selected if the values of M and WINDOW_SIZE fo
<t>At the beginning of the fragmentation of a new SCHC Packet,</t> r that Rule are such that the SCHC Packet cannot be fragmented in (2^M) * WINDOW
_SIZE tiles or less.</li>
<t><list style="symbols"> <li>the fragment sender <bcp14>MUST</bcp14> initialize the Attempt
<t>the fragment sender MUST select a Rule ID and DTag value pair for this SCHC s counter to 0 for that RuleID and DTag value pair.</li>
Packet. </ul>
A Rule MUST NOT be selected if the values of M and WINDOW_SIZE for that Rule are <t>A Regular SCHC Fragment message carries in its payload one or mor
such that the SCHC Packet cannot be fragmented in (2^M) * WINDOW_SIZE tiles or e tiles.
less.</t> If more than one tile is carried in one Regular SCHC Fragment:</t>
<t>the fragment sender MUST initialize the Attempts counter to 0 for that Rule <ul spacing="normal">
ID and DTag value pair.</t> <li>the selected tiles <bcp14>MUST</bcp14> be contiguous in the or
</list></t> iginal SCHC Packet, and</li>
<li>they <bcp14>MUST</bcp14> be placed in the SCHC Fragment Payloa
<t>A Regular SCHC Fragment message carries in its payload one or more tiles. d adjacent to one another, in the order they appear in the SCHC Packet, from the
If more than one tile is carried in one Regular SCHC Fragment</t> start of the SCHC Packet toward its end.</li>
</ul>
<t><list style="symbols"> <t>Tiles that are not the last one <bcp14>MUST</bcp14> be sent in Re
<t>the selected tiles MUST be contiguous in the original SCHC Packet</t> gular SCHC Fragments specified in <xref target="NotLastFrag" format="default"/>.
<t>they MUST be placed in the SCHC Fragment Payload adjacent to one another, i The FCN field <bcp14>MUST</bcp14> contain the tile index of the first tile sent
n the order they appear in the SCHC Packet, from the start of the SCHC Packet to in that SCHC Fragment.</t>
ward its end.</t> <t>In a Regular SCHC Fragment message, the sender <bcp14>MUST</bcp14
</list></t> > fill the W field with the window number of the first tile sent in that SCHC Fr
agment.</t>
<t>Tiles that are not the last one MUST be sent in Regular SCHC Fragments specif <t>A Profile <bcp14>MUST</bcp14> define if the last tile of a SCHC P
ied in <xref target="NotLastFrag"/>. acket is sent:</t>
The FCN field MUST contain the tile index of the first tile sent in that SCHC Fr <ul spacing="normal">
agment.</t> <li>in a Regular SCHC Fragment, alone or as part of a multi-tiles
Payload,</li>
<t>In a Regular SCHC Fragment message, the sender MUST fill the W field with the <li>alone in an All-1 SCHC Fragment, or</li>
window number of the first tile sent in that SCHC Fragment.</t> <li>with any of the above two methods.</li>
</ul>
<t>Depending on the Profile, the last tile of a SCHC Packet MUST be sent either< <t>In an All-1 SCHC Fragment message, the sender <bcp14>MUST</bcp14>
/t> fill the W field with the window number of the last tile of the SCHC Packet.</t
>
<t><list style="symbols"> <t>The fragment sender <bcp14>MUST</bcp14> send SCHC Fragments such
<t>in a Regular SCHC Fragment, alone or as part of a multi-tiles Payload</t> that, all together, they contain all the tiles of the fragmented SCHC Packet.</t
<t>alone in an All-1 SCHC Fragment</t> >
</list></t> <t>The fragment sender <bcp14>MUST</bcp14> send at least one All-1 S
CHC Fragment.</t>
<t>In an All-1 SCHC Fragment message, the sender MUST fill the W field with the <t>In doing the two items above, the sender <bcp14>MUST</bcp14> asce
window number of the last tile of the SCHC Packet.</t> rtain that the receiver will not receive the last tile through both a Regular SC
HC Fragment and an All-1 SCHC Fragment.</t>
<t>The fragment sender MUST send SCHC Fragments such that, all together, they co <t>The fragment sender <bcp14>MUST</bcp14> listen for SCHC ACK messa
ntain all the tiles of the fragmented SCHC Packet.</t> ges after having sent:</t>
<ul spacing="normal">
<t>The fragment sender MUST send at least one All-1 SCHC Fragment.</t> <li>an All-1 SCHC Fragment, or</li>
<li>a SCHC ACK REQ.</li>
<t>The fragment sender MUST listen for SCHC ACK messages after having sent</t> </ul>
<t>A Profile <bcp14>MAY</bcp14> specify other times at which the fra
<t><list style="symbols"> gment sender <bcp14>MUST</bcp14> listen for SCHC ACK messages.
<t>an All-1 SCHC Fragment</t>
<t>or a SCHC ACK REQ.</t>
</list></t>
<t>A Profile MAY specify other times at which the fragment sender MUST listen fo
r SCHC ACK messages.
For example, this could be after sending a complete window of tiles.</t> For example, this could be after sending a complete window of tiles.</t>
<t>Each time a fragment sender sends an All-1 SCHC Fragment or a SCH
<t>Each time a fragment sender sends an All-1 SCHC Fragment or a SCHC ACK REQ,</ C ACK REQ:</t>
t> <ul spacing="normal">
<li>it <bcp14>MUST</bcp14> increment the Attempts counter, and</li
<t><list style="symbols"> >
<t>it MUST increment the Attempts counter</t> <li>it <bcp14>MUST</bcp14> reset the Retransmission Timer.</li>
<t>it MUST reset the Retransmission Timer</t> </ul>
</list></t> <t>On Retransmission Timer expiration:</t>
<ul spacing="normal">
<t>On Retransmission Timer expiration</t> <li>if the Attempts counter is strictly less than MAX_ACK_REQUESTS
,
<t><list style="symbols"> the fragment sender <bcp14>MUST</bcp14> send
<t>if Attempts is strictly less than MAX_ACK_REQUESTS,
the fragment sender MUST send
either the All-1 SCHC Fragment or either the All-1 SCHC Fragment or
a SCHC ACK REQ with the W field corresponding to the last window,</t> a SCHC ACK REQ with the W field corresponding to the last window,</li>
<t>otherwise the fragment sender MUST send a SCHC Sender-Abort and <li>otherwise, the fragment sender <bcp14>MUST</bcp14> send a SCHC
it MAY exit with an error condition.</t> Sender-Abort, and
</list></t> it <bcp14>MAY</bcp14> exit with an error condition.</li>
</ul>
<t>All message receptions being discussed in the rest of this section are to be <t>All message receptions being discussed in the rest of this sectio
understood as n are to be understood as
“matching the RuleID and DTag pair being processed”, even if not spelled out, fo "matching the RuleID and DTag pair being processed", even if not spelled out, fo
r brevity.</t> r brevity.</t>
<t>On receiving a SCHC ACK:</t>
<t>On receiving a SCHC ACK,</t> <ul spacing="normal">
<li>
<t><list style="symbols"> <t>if the W field in the SCHC ACK corresponds to the last window
<t>if the W field in the SCHC ACK corresponds to the last window of the SCHC P of the SCHC Packet:</t>
acket, <list style="symbols"> <ul spacing="normal">
<t>if the C bit is set, the sender MAY exit successfully</t> <li>if the C bit is set, the sender <bcp14>MAY</bcp14> exit su
<t>otherwise, <list style="symbols"> ccessfully.</li>
<t>if the Profile mandates that the last tile be sent in an All-1 SCHC <li>
Fragment, <list style="symbols"> <t>otherwise: </t>
<t>if the SCHC ACK shows no missing tile at the receiver, the send <ul spacing="normal">
er <list style="symbols"> <li>
<t>MUST send a SCHC Sender-Abort</t> <t>if the Profile mandates that the last tile be sent in
<t>MAY exit with an error condition</t> an All-1 SCHC Fragment:</t>
</list></t> <ul spacing="normal">
<t>otherwise <list style="symbols"> <li>
<t>the fragment sender MUST send SCHC Fragment messages contai <t>if the SCHC ACK shows no missing tile at the rece
ning all the tiles that are reported missing in the SCHC ACK.</t> iver, the sender:</t>
<t>if the last of these SCHC Fragment messages is not an All-1 <ul spacing="normal">
SCHC Fragment, <li><bcp14>MUST</bcp14> send a SCHC Sender-Abort,
then the fragment sender MUST in addition send after it a SCHC ACK REQ with the and</li>
W field corresponding to the last window.</t> <li><bcp14>MAY</bcp14> exit with an error conditio
</list></t> n.</li>
</list></t> </ul>
<t>otherwise, <list style="symbols"> </li>
<t>if the SCHC ACK shows no missing tile at the receiver, the send <li>
er <t>otherwise:</t>
MUST send the All-1 SCHC Fragment</t> <ul spacing="normal">
<t>otherwise <list style="symbols"> <li>the fragment sender <bcp14>MUST</bcp14> send S
<t>the fragment sender MUST send SCHC Fragment messages contai CHC Fragment messages containing all the tiles that are reported missing in the
ning all the tiles that are reported missing in the SCHC ACK.</t> SCHC ACK.</li>
<t>the fragment sender MUST then send <li>if the last of these SCHC Fragment messages is
not an All-1 SCHC Fragment,
then the fragment sender <bcp14>MUST</bcp14> in addition send after it a SCHC AC
K REQ with the W field corresponding to the last window.</li>
<li>in doing the two items above, the sender <bcp1
4>MUST</bcp14> ascertain that the receiver will not receive the last tile throug
h both a Regular SCHC Fragment and an All-1 SCHC Fragment.</li>
</ul>
</li>
</ul>
</li>
<li>
<t>otherwise:</t>
<ul spacing="normal">
<li>if the SCHC ACK shows no missing tile at the recei
ver, the sender
<bcp14>MUST</bcp14> send the All-1 SCHC Fragment</li>
<li>
<t>otherwise:</t>
<ul spacing="normal">
<li>the fragment sender <bcp14>MUST</bcp14> send S
CHC Fragment messages containing all the tiles that are reported missing in the
SCHC ACK.</li>
<li>the fragment sender <bcp14>MUST</bcp14> then s
end
either the All-1 SCHC Fragment or either the All-1 SCHC Fragment or
a SCHC ACK REQ with the W field corresponding to the last window.</t> a SCHC ACK REQ with the W field corresponding to the last window.</li>
</list></t> </ul>
</list></t> </li>
</list></t> </ul>
</list></t> </li>
<t>otherwise, the fragment sender <list style="symbols"> </ul>
<t>MUST send SCHC Fragment messages containing the tiles that are reported </li>
missing in the SCHC ACK</t> </ul>
<t>then it MAY send a SCHC ACK REQ with the W field corresponding to the l </li>
ast window</t> <li>
</list></t> <t>otherwise, the fragment sender:</t>
</list></t> <ul spacing="normal">
<li><bcp14>MUST</bcp14> send SCHC Fragment messages containing
<t>See <xref target="Fig-ACKonerrorSnd"/> for one among several possible example the tiles that are reported missing in the SCHC ACK.</li>
s of a Finite State Machine implementing a sender behavior obeying this specific <li>then, it <bcp14>MAY</bcp14> send a SCHC ACK REQ with the W
ation.</t> field corresponding to the last window.</li>
</ul>
</section> </li>
<section anchor="ACK-on-Error-receiver" title="Receiver behavior"> </ul>
<t>See <xref target="Fig-ACKonerrorSnd" format="default"/> for one a
<t>On receiving a SCHC Fragment with a Rule ID and DTag pair not being processed mong several possible examples of a Finite State Machine implementing a sender b
at that time</t> ehavior obeying this specification.</t>
</section>
<t><list style="symbols"> <section anchor="ACK-on-Error-receiver" numbered="true" toc="default">
<t>the receiver SHOULD check if the DTag value has not recently been used for <name>Receiver Behavior</name>
that Rule ID value, <t>On receiving a SCHC Fragment with a RuleID and DTag pair not bein
g processed at that time:</t>
<ul spacing="normal">
<li>the receiver <bcp14>SHOULD</bcp14> check if 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 fra gmented SCHC Packet transmission. thereby ensuring that the received SCHC Fragment is not a remnant of a prior fra gmented SCHC Packet transmission.
The initial value of the Inactivity Timer is the RECOMMENDED lifetime for the DT The initial value of the Inactivity Timer is the <bcp14>RECOMMENDED</bcp14> life
ag value at the receiver. time for the DTag value at the receiver.
If the SCHC Fragment is determined to be such a remnant, the receiver MAY silent If the SCHC Fragment is determined to be such a remnant, the receiver <bcp14>MAY
ly ignore it and discard it.</t> </bcp14> silently ignore it and discard it.</li>
<t>the receiver MUST start a process to assemble a new SCHC Packet with that R <li>the receiver <bcp14>MUST</bcp14> start a process to assemble a
ule ID and DTag value pair. new SCHC Packet with that RuleID and DTag value pair.
The receiver MUST start an Inactivity Timer for that Rule ID and DTag value pair The receiver <bcp14>MUST</bcp14> start an Inactivity Timer for that RuleID and D
. Tag value pair.
It MUST initialize an Attempts counter to 0 for that Rule ID and DTag value pair It <bcp14>MUST</bcp14> initialize an Attempts counter to 0 for that RuleID and D
. Tag value pair.
If the receiver is under-resourced to do this, it MUST respond to the sender wit If the receiver is under-resourced to do this, it <bcp14>MUST</bcp14> respond to
h a SCHC Receiver Abort.</t> the sender with a SCHC Receiver-Abort.</li>
</list></t> </ul>
<t>On reception of any SCHC F/R message for the RuleID and DTag pair
<t>On reception of any SCHC F/R message for the RuleID and DTag pair being proce being processed, the receiver <bcp14>MUST</bcp14> reset the Inactivity Timer pe
ssed, the receiver MUST reset the Inactivity Timer pertaining to that RuleID and rtaining to that RuleID and DTag pair.</t>
DTag pair.</t> <t>All message receptions being discussed in the rest of this sectio
n are to be understood as
<t>All message receptions being discussed in the rest of this section are to be "matching the RuleID and DTag pair being processed", even if not spelled out, fo
understood as r brevity.</t>
“matching the RuleID and DTag pair being processed”, even if not spelled out, fo <t>On receiving a SCHC Fragment message,
r brevity.</t>
<t>On receiving a SCHC Fragment message,
the receiver determines what tiles were received, based on the payload length an d on the W and FCN fields of the SCHC Fragment.</t> the receiver determines what tiles were received, based on the payload length an d on the W and FCN fields of the SCHC Fragment.</t>
<ul spacing="normal">
<t><list style="symbols"> <li>if the FCN is All-1, if a Payload is present, the full SCHC Fr
<t>if the FCN is All-1, if a Payload is present, the full SCHC Fragment Payloa agment Payload <bcp14>MUST</bcp14> be assembled including the padding bits.
d MUST be assembled including the padding bits. This is because the size of the last tile is not known by the receiver;
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 s
therefore padding bits are indistinguishable from the tile data bits, at this st tage.
age.
They will be removed by the SCHC C/D sublayer. They will be removed by the SCHC C/D sublayer.
If the size of the SCHC Fragment Payload exceeds or equals 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 SHOULD raise an e the size of one regular tile plus the size of an L2 Word, this <bcp14>SHOULD</bc
rror flag.</t> p14> raise an error flag.</li>
<t>otherwise, tiles MUST be assembled based on the a priori known tile size. <li>
<list style="symbols"> <t>otherwise, tiles <bcp14>MUST</bcp14> be assembled based on th
<t>If allowed by the Profile, the end of the payload MAY contain the last e a priori known tile size.
tile, which may be shorter. Padding bits are indistinguishable from the tile dat </t>
a bits, at this stage.</t> <ul spacing="normal">
<t>the payload may contain the penultimate tile that, if allowed by the Pr <li>If allowed by the Profile, the end of the payload <bcp14>M
ofile, MAY be exactly one L2 Word shorter than the regular tile size.</t> AY</bcp14> contain the last tile, which may be shorter. Padding bits are indisti
<t>Otherwise, padding bits MUST be discarded. nguishable from the tile data bits, at this stage.</li>
The latter is possible because <list style="symbols"> <li>The payload may contain the penultimate tile that, if allo
<t>the size of the tiles is known a priori,</t> wed by the Profile, <bcp14>MAY</bcp14> be exactly one L2 Word shorter than the r
<t>tiles are larger than an L2 Word</t> egular tile size.</li>
<t>padding bits are always strictly less than an L2 Word</t> <li>
</list></t> <t>Otherwise, padding bits <bcp14>MUST</bcp14> be discarded.
</list></t> This is possible because:</t>
</list></t> <ul spacing="normal">
<li>the size of the tiles is known a priori,</li>
<t>On receiving a SCHC ACK REQ or an All-1 SCHC Fragment,</t> <li>tiles are larger than an L2 Word, and</li>
<li>padding bits are always strictly less than an L2 Word.
<t><list style="symbols"> </li>
<t>if the receiver knows of any windows with missing tiles for the packet bein </ul>
g reassembled, it </li>
MUST return a SCHC ACK for the lowest-numbered such window,</t> </ul>
<t>otherwise, </li>
<list style="symbols"> </ul>
<t>if it has received at least one tile, it MUST return a SCHC ACK for the <t>On receiving a SCHC ACK REQ or an All-1 SCHC Fragment:</t>
highest-numbered window it currently has tiles for</t> <ul spacing="normal">
<t>otherwise it MUST return a SCHC ACK for window numbered 0</t> <li>if the receiver knows of any windows with missing tiles for th
</list></t> e packet being reassembled, it
</list></t> <bcp14>MUST</bcp14> return a SCHC ACK for the lowest-numbered such window:</li>
<li>
<t>A Profile MAY specify other times and circumstances at which <t>otherwise:
</t>
<ul spacing="normal">
<li>if it has received at least one tile, it <bcp14>MUST</bcp1
4> return a SCHC ACK for the highest-numbered window it currently has tiles for,
</li>
<li>otherwise, it <bcp14>MUST</bcp14> return a SCHC ACK for wi
ndow numbered 0.</li>
</ul>
</li>
</ul>
<t>A Profile <bcp14>MAY</bcp14> specify other times and circumstance
s at which
a receiver sends a SCHC ACK, a receiver sends a SCHC ACK,
and which window the SCHC ACK reports about in these circumstances.</t> and which window the SCHC ACK reports about in these circumstances.</t>
<t>Upon sending a SCHC ACK, the receiver <bcp14>MUST</bcp14> increas
<t>Upon sending a SCHC ACK, the receiver MUST increase the Attempts counter.</t> e the Attempts counter.</t>
<t>After receiving an All-1 SCHC Fragment,
<t>After receiving an All-1 SCHC Fragment, a receiver <bcp14>MUST</bcp14> check the integrity of the reassembled SCHC Packe
a receiver MUST check the integrity of the reassembled SCHC Packet at least ever t at least every time
y time
it prepares for sending a SCHC ACK for the last window.</t> it prepares for sending a SCHC ACK for the last window.</t>
<t>Upon receiving a SCHC Sender-Abort,
the receiver <bcp14>MAY</bcp14> exit with an error condition.</t>
<t>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>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>Reassembly of the SCHC Packet concludes when:</t>
<ul spacing="normal">
<li>a Sender-Abort has been received, or</li>
<li>the Inactivity Timer has expired, or</li>
<li>the Attempts counter has exceeded MAX_ACK_REQUESTS, or</li>
<li>at least an All-1 SCHC Fragment has been received and integrit
y checking of the reassembled SCHC Packet is successful.</li>
</ul>
<t>Upon receiving a SCHC Sender-Abort, <t>See <xref target="Fig-ACKonerrorRcv" format="default"/> for one a
the receiver MAY exit with an error condition.</t> mong several possible examples of a Finite State Machine implementing a receiver
behavior obeying this specification. The example provided is meant to match the
<t>Upon expiration of the Inactivity Timer, sender Finite State Machine of <xref target="Fig-ACKonerrorSnd" format="default
the receiver MUST send a SCHC Receiver-Abort "/>.</t>
and it MAY exit with an error condition.</t> </section>
</section>
<t>On the Attempts counter exceeding MAX_ACK_REQUESTS, </section>
the receiver MUST send a SCHC Receiver-Abort </section>
and it MAY exit with an error condition.</t> <section anchor="Padding" numbered="true" toc="default">
<name>Padding Management</name>
<t>Reassembly of the SCHC Packet concludes when</t> <t>SCHC C/D and SCHC F/R operate on bits, not bytes. SCHC itself does not
have any alignment prerequisite.
<t><list style="symbols">
<t>a Sender-Abort has been received</t>
<t>or the Inactivity Timer has expired</t>
<t>or the Attempts counter has exceeded MAX_ACK_REQUESTS</t>
<t>or when at least an All-1 SCHC Fragment has been received and integrity che
cking of the reassembled SCHC Packet is successful.</t>
</list></t>
<t>See <xref target="Fig-ACKonerrorRcv"/> for one among several possible example
s of a Finite State Machine implementing a receiver behavior obeying this specif
ication,
and that is meant to match the sender Finite State Machine of <xref target="Fig-
ACKonerrorSnd"/>.</t>
</section>
</section>
</section>
</section>
<section anchor="Padding" title="Padding management">
<t>SCHC C/D and SCHC F/R operate on bits, not bytes. SCHC itself does not have a
ny alignment prerequisite.
The size of SCHC Packets can be any number of bits.</t> The size of SCHC Packets can be any number of bits.</t>
<t>If the L2 constrains the payload to align to coarser boundaries (for ex
<t>If the layer below SCHC constrains the payload to align to some boundary, cal ample, bytes),
led L2 Words (for example, bytes), the SCHC messages <bcp14>MUST</bcp14> be padded.
the SCHC messages MUST be padded. When padding occurs, the number of appended bits <bcp14>MUST</bcp14> be strictly
When padding occurs, the number of appended bits MUST be strictly less than the less than the L2 Word size.</t>
L2 Word size.</t> <t>If a SCHC Packet is sent unfragmented (see <xref target="Fig-Operations
-Pad" format="default"/>), it is padded as needed for transmission.</t>
<t>If a SCHC Packet is sent unfragmented (see <xref target="Fig-Operations-Pad"/ <t>If a SCHC Packet needs to be fragmented for transmission, it is not pad
>), it is padded as needed for transmission.</t> ded in itself. Only the SCHC F/R messages are padded as needed for transmission.
<t>If a SCHC Packet needs to be fragmented for transmission, it is not padded in
itself. Only the SCHC F/R messages are padded as needed for transmission.
Some SCHC F/R messages are intrinsically aligned to L2 Words.</t> Some SCHC F/R messages are intrinsically aligned to L2 Words.</t>
<figure anchor="Fig-Operations-Pad">
<figure title="SCHC operations, including padding as needed" anchor="Fig-Operati <name>SCHC Operations, Including Padding as Needed</name>
ons-Pad"><artwork><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
A packet (e.g., an IPv6 packet) A packet (e.g., an IPv6 packet)
| ^ (padding bits | ^ (padding bits
v | dropped) v | dropped)
+------------------+ +--------------------+ +------------------+ +--------------------+
| SCHC Compression | | SCHC Decompression | | SCHC Compression | | SCHC Decompression |
+------------------+ +--------------------+ +------------------+ +--------------------+
| ^ | ^
| If no fragmentation | | If no fragmentation, |
+---- SCHC Packet + padding as needed ----->| +---- SCHC Packet + padding as needed ----->|
| | (integrity | | (integrity
v | checked) v | checked)
+--------------------+ +-----------------+ +--------------------+ +-----------------+
| SCHC Fragmentation | | SCHC Reassembly | | SCHC Fragmentation | | SCHC Reassembly |
+--------------------+ +-----------------+ +--------------------+ +-----------------+
| ^ | ^ | ^ | ^
| | | | | | | |
| +--- SCHC ACK + padding as needed --+ | | +--- SCHC ACK + padding as needed --+ |
| | | |
+------- SCHC Fragments + padding as needed---------+ +------- SCHC Fragments + padding as needed---------+
Sender Receiver Sender Receiver]]></artwork>
</figure>
]]></artwork></figure> <t>Each Profile <bcp14>MUST</bcp14> specify the size of the L2 Word.
<t>Each Profile MUST specify the size of the L2 Word.
The L2 Word might actually be a single bit, in which case no padding will take p lace at all.</t> The L2 Word might actually be a single bit, in which case no padding will take p lace at all.</t>
<t>A Profile <bcp14>MUST</bcp14> define the value of the padding bits if t
<t>A Profile MAY define the value of the padding bits. The RECOMMENDED value is he L2 Word is wider than a single bit. The <bcp14>RECOMMENDED</bcp14> value is 0
0.</t> .</t>
</section>
</section> <section anchor="schc-compression-for-ipv6-and-udp-headers" numbered="true"
<section anchor="schc-compression-for-ipv6-and-udp-headers" title="SCHC Compress toc="default">
ion for IPv6 and UDP headers"> <name>SCHC Compression for IPv6 and UDP Headers</name>
<t>This section lists the IPv6 and UDP header fields and describes how the
<t>This section lists the IPv6 and UDP header fields and describes how they can y can be compressed.
be compressed. An example of a set of Rules for UDP/IPv6 header compression is provided in <xre
An example of a set of Rules for UDP/IPv6 header compression is provided in <xre f target="compressIPv6" format="default"/>.</t>
f target="compressIPv6"/>.</t> <section anchor="ipv6-version-field" numbered="true" toc="default">
<name>IPv6 Version Field</name>
<section anchor="ipv6-version-field" title="IPv6 version field"> <t>The IPv6 version field is labeled by the protocol parser as being the
"version" field of the IPv6 protocol.
<t>The IPv6 version field is labeled by the protocol parser as being the “versio
n” field of the IPv6 protocol.
Therefore, it only exists for IPv6 packets. Therefore, it only exists for IPv6 packets.
In the Rule, TV is set to 6, MO to “ignore” In the Rule, TV is set to 6, MO to "ignore"
and CDA to “not-sent”.</t> and CDA to "not-sent".</t>
</section>
</section> <section anchor="ipv6-traffic-class-field" numbered="true" toc="default">
<section anchor="ipv6-traffic-class-field" title="IPv6 Traffic class field"> <name>IPv6 Traffic Class Field</name>
<t>If the DiffServ field does not vary and is known by both sides, the Field Des
criptor in the Rule SHOULD contain a TV with
this well-known value, an “equal” MO and a “not-sent” CDA.</t>
<t>Otherwise (e.g., ECN bits are to be transmitted), two possibilities can be co
nsidered depending on the variability of the value:</t>
<t><list style="symbols"> <t>If the Diffserv field does not vary and is known by both sides, the F
<t>One possibility is to not compress the field and send the original value. I ield Descriptor in the Rule <bcp14>SHOULD</bcp14> contain a TV with
n the Rule, TV is not set to any particular value, MO is set to “ignore” and CDA this well-known value, an "equal" MO, and a "not-sent" CDA.</t>
is set to “value-sent”.</t> <t>Otherwise (e.g., ECN bits are to be transmitted), two possibilities c
<t>If some upper bits in the field are constant and known, a better option is an be considered depending on the variability of the value:</t>
to only send the LSBs. In the Rule, TV is set to a value with the stable known u <ul spacing="normal">
pper part, MO is set to MSB(x) and CDA to LSB. <vspace blankLines='1'/> <li>One possibility is to not compress the field and send the original
value. In the Rule, TV is not set to any particular value, MO is set to "ignore
", and CDA is set to "value-sent".</li>
<li>
<t>If some upper bits in the field are constant and known, a better
option is to only send the LSBs. In the Rule, TV is set to a value with the stab
le known upper part, MO is set to MSB(x), and CDA to LSB. </t>
<t>
ECN functionality depends on both bits of the ECN field, which ECN functionality depends on both bits of the ECN field, which
are the 2 LSBs of this field, hence sending only a single are the 2 LSBs of this field; hence, sending only a single
LSB of this field is NOT RECOMMENDED.</t> LSB of this field is <bcp14>NOT RECOMMENDED</bcp14>.</t>
</list></t> </li>
</ul>
</section> </section>
<section anchor="flow-label-field" title="Flow label field"> <section anchor="flow-label-field" numbered="true" toc="default">
<name>Flow Label Field</name>
<t>If the flow label is not set, i.e. its value is zero, the Field Descriptor in <t>If the flow label is not set, i.e., its value is zero, the Field Desc
the Rule SHOULD contain a TV set to zero, an “equal” MO and a “not-sent” CDA.</ riptor in the Rule <bcp14>SHOULD</bcp14> contain a TV set to zero, an "equal" MO
t> , and a "not-sent" CDA.</t>
<t>If the flow label is set to a pseudorandom value according to <xref t
<t>If the flow label is set to a pseudo-random value according to <xref target=" arget="RFC6437" format="default"/>, in the Rule, TV is not set to any particular
RFC6437"/>, in the Rule, TV is not set to any particular value, MO is set to “ig value, MO is set to "ignore", and CDA is set to "value-sent".</t>
nore” and CDA is set to “value-sent”.</t> <t>If the flow label is set according to some prior agreement, i.e., by
a flow state establishment method as allowed by <xref target="RFC6437" format="d
<t>If the flow label is set according to some prior agreement, i.e. by a flow st efault"/>,
ate establishment method as allowed by <xref target="RFC6437"/>, the Field Descriptor in the Rule <bcp14>SHOULD</bcp14> contain a TV with this ag
the Field Descriptor in the Rule SHOULD contain a TV with this agreed-upon value reed-upon value, an "equal" MO, and a "not-sent" CDA.</t>
, an “equal” MO and a “not-sent” CDA.</t> </section>
<section anchor="payload-length-field" numbered="true" toc="default">
</section> <name>Payload Length Field</name>
<section anchor="payload-length-field" title="Payload Length field"> <t>This field can be elided for the transmission on the LPWAN. The SCHC
C/D recomputes the original payload length value. In the Field Descriptor, TV is
<t>This field can be elided for the transmission on the LPWAN network. The SCHC not set, MO is set to "ignore", and CDA is "compute-*".</t>
C/D recomputes the original payload length value. In the Field Descriptor, TV is </section>
not set, MO is set to “ignore” and CDA is “compute-*”.</t> <section anchor="next-header-field" numbered="true" toc="default">
<name>Next Header Field</name>
</section> <t>If the Next Header field does not vary and is known by both sides, th
<section anchor="next-header-field" title="Next Header field"> e Field Descriptor in the Rule <bcp14>SHOULD</bcp14> contain a TV with
this Next Header value, the MO <bcp14>SHOULD</bcp14> be "equal", and the CDA <bc
<t>If the Next Header field does not vary and is known by both sides, the Field p14>SHOULD</bcp14> be "not-sent".</t>
Descriptor in the Rule SHOULD contain a TV with <t>Otherwise, TV is not set in the Field Descriptor, MO is set to "ignor
this Next Header value, the MO SHOULD be “equal” and the CDA SHOULD be “not-sent e", and CDA is set to "value-sent". Alternatively, a matching-list <bcp14>MAY</b
”.</t> cp14> also be used.</t>
</section>
<t>Otherwise, TV is not set in the Field Descriptor, MO is set to “ignore” and C <section anchor="hop-limit-field" numbered="true" toc="default">
DA is set to “value-sent”. Alternatively, a matching-list MAY also be used.</t> <name>Hop Limit Field</name>
<t>The field behavior for this field is different for Uplink and Downlin
</section> k.
<section anchor="hop-limit-field" title="Hop Limit field"> In Uplink, since there is no IP forwarding between the Dev and the SCHC C/D, the
value is relatively constant.
<t>The field behavior for this field is different for uplink (Up) and downlink ( On the other hand, the Downlink value depends on Internet routing and can change
Dw). more frequently.
In Up, since there is no IP forwarding between the Dev and the SCHC C/D, the val The DI can be used to distinguish both directions:</t>
ue is relatively constant. <ul spacing="normal">
On the other hand, the Dw value depends on Internet routing and can change more <li>in an Up Field Descriptor, elide the field: the TV is set to the k
frequently. nown constant value, the MO is set to "equal" and the CDA is set to "not-sent".<
The Direction Indicator (DI) can be used to distinguish both directions:</t> /li>
<li>in a Dw Field Descriptor, the Hop Limit is elided for transmission
<t><list style="symbols"> and forced to 1 at the receiver, by setting TV to 1, MO to "ignore" and CDA to
<t>in the Up, elide the field: the TV in the Field Descriptor is set to the kn "not-sent". This prevents any further forwarding.</li>
own constant value, the MO is set to “equal” and the CDA is set to “not-sent”.</ </ul>
t> </section>
<t>in the Dw, the Hop Limit is elided for transmission and forced to 1 at the <section anchor="ipv6-addresses-fields" numbered="true" toc="default">
receiver, by setting TV to 1, MO to “ignore” and CDA to “not-sent”. This prevent <name>IPv6 Addresses Fields</name>
s any further forwarding.</t> <t>As in 6LoWPAN <xref target="RFC4944" format="default"/>, IPv6 address
</list></t> es are split into two 64-bit-long fields; one for the prefix and one for the Int
erface Identifier (IID). These fields <bcp14>SHOULD</bcp14> be compressed. To al
</section> low for a single Rule being used for both directions, these values are identifie
<section anchor="ipv6-addresses-fields" title="IPv6 addresses fields"> d by their role (Dev or App) and not by their position in the header (source or
destination).</t>
<t>As in 6LoWPAN <xref target="RFC4944"/>, IPv6 addresses are split into two 64- <section anchor="ipv6-source-and-destination-prefixes" numbered="true" t
bit long fields; one for the prefix and one for the Interface Identifier (IID). oc="default">
These fields SHOULD be compressed. To allow for a single Rule being used for bot <name>IPv6 Source and Destination Prefixes</name>
h directions, these values are identified by their role (Dev or App) and not by <t>Both ends <bcp14>MUST</bcp14> be configured with the appropriate pr
their position in the header (source or destination).</t> efixes. For a specific flow, the source and destination prefixes can be unique a
nd stored in the Context.
<section anchor="ipv6-source-and-destination-prefixes" title="IPv6 source and de
stination prefixes">
<t>Both ends MUST be configured with the appropriate prefixes. For a specific fl
ow, the source and destination prefixes can be unique and stored in the Context.
In that case, the TV for the In that case, the TV for the
source and destination prefixes contain the values, the MO is set to “equal” and source and destination prefixes contain the values, the MO is set to "equal" and
the CDA is set to “not-sent”.</t> the CDA is set to "not-sent".</t>
<t>If the Rule is intended to compress packets with different prefix v
<t>If the Rule is intended to compress packets with different prefix values, mat alues, match-mapping <bcp14>SHOULD</bcp14> be used. The different prefixes are l
ch-mapping SHOULD be used. The different prefixes are listed in the TV, the MO i isted in the TV, the MO is set to "match-mapping" and the CDA is set to "mapping
s set to “match-mapping” and the CDA is set to “mapping-sent”. See <xref target= -sent". See <xref target="Fig-fields" format="default"/>.</t>
"Fig-fields"/>.</t> <t>Otherwise, the TV is not set, the MO is set to "ignore", and the CD
A is set to "value-sent".</t>
<t>Otherwise, the TV is not set, the MO is set to “ignore” and the CDA is set to </section>
“value-sent”.</t> <section anchor="ipv6-source-and-destination-iid" numbered="true" toc="d
efault">
</section> <name>IPv6 Source and Destination IID</name>
<section anchor="ipv6-source-and-destination-iid" title="IPv6 source and destina <t>If the Dev or App IID are based on an L2 address, then the IID can
tion IID"> be reconstructed with information coming from the L2 header. In that case, the T
V is not set, the MO is set to "ignore" and the CDA is set to "DevIID" or "AppII
<t>If the Dev or App IID are based on an LPWAN address, then the IID can be reco D".
nstructed with information coming from the LPWAN header. In that case, the TV is On LPWAN technologies where the frames carry a single identifier (corresponding
not set, the MO is set to “ignore” and the CDA is set to “DevIID” or “AppIID”. to the Dev), AppIID cannot be used.</t>
On LPWAN technologies where the frames carry a single identifier (corresponding <t>As described in <xref target="RFC8065" format="default"/>, it may b
to the Dev.), AppIID cannot be used.</t> e undesirable to build the Dev IPv6 IID out of the Dev address. Another static v
alue is used instead.
<t>As described in <xref target="RFC8065"/>, it may be undesirable to build the In that case, the TV contains the static value, the MO operator is set to "equal
Dev IPv6 IID out of the Dev address. Another static value is used instead. " and the CDA is set to "not-sent".</t>
In that case, the TV contains the static value, the MO operator is set to “equal <t>If several IIDs are possible, then the TV contains the list of poss
and the CDA is set to “not-sent”.</t> ible IIDs, the MO is set to "match-mapping" and the CDA is set to "mapping-sent"
.</t>
<t>If several IIDs are possible, then the TV contains the list of possible IIDs, <t>It may also happen that the IID variability only expresses itself o
the MO is set to “match-mapping” and the CDA is set to “mapping-sent”.</t> n a few bytes. In that case, the TV is set to the stable part of the IID, the MO
is set to "MSB" and the CDA is set to "LSB".</t>
<t>It may also happen that the IID variability only expresses itself on a few by <t>Finally, the IID can be sent in its entirety on the L2. In that cas
tes. In that case, the TV is set to the stable part of the IID, the MO is set to e, the TV is not set, the MO is set to "ignore", and the CDA is set to "value-se
“MSB” and the CDA is set to “LSB”.</t> nt".</t>
</section>
<t>Finally, the IID can be sent in its entirety on the LPWAN. In that case, the </section>
TV is not set, the MO is set to “ignore” and the CDA is set to “value-sent”.</t> <section anchor="ipv6-extension-headers" numbered="true" toc="default">
<name>IPv6 Extension Headers</name>
</section> <t>This document does not provide recommendations on how to compress IPv
</section> 6 extension headers.</t>
<section anchor="ipv6-extension-headers" title="IPv6 extension headers"> </section>
<section anchor="udp-source-and-destination-ports" numbered="true" toc="de
<t>This document does not provide recommendations on how to compress IPv6 extens fault">
ion headers.</t> <name>UDP Source and Destination Ports</name>
<t>To allow for a single Rule being used for both directions, the UDP po
</section> rt values are identified by their role (Dev or App) and not by their position in
<section anchor="udp-source-and-destination-ports" title="UDP source and destina the header (source or destination). The SCHC C/D <bcp14>MUST</bcp14> be aware o
tion ports"> f the traffic direction (Uplink, Downlink) to select the appropriate field. The
following Rules apply for Dev and App port numbers.</t>
<t>To allow for a single Rule being used for both directions, the UDP port value <t>If both ends know the port number, it can be elided. The TV
s are identified by their role (Dev or App) and not by their position in the hea contains the port number, the MO is set to "equal", and the CDA is set to
der (source or destination). The SCHC C/D MUST be aware of the traffic direction "not-sent".</t>
(Uplink, Downlink) to select the appropriate field. The following Rules apply f <t>If the port variation is on few bits, the TV contains the stable part
or Dev and App port numbers.</t> of the port number, the MO is set to "MSB", and the CDA is set to "LSB".</t>
<t>If some well-known values are used, the TV can contain the list of t
<t>If both ends know the port number, it can be elided. The TV contains the port hese values, the MO is set to "match-mapping", and the CDA is set to "mapping-se
number, the MO is set to “equal” and the CDA is set to “not-sent”.</t> nt".</t>
<t>Otherwise, the port numbers are sent over the L2. The TV is not set,
<t>If the port variation is on few bits, the TV contains the stable part of the the MO is set to "ignore" and the CDA is set to "value-sent".</t>
port number, the MO is set to “MSB” and the CDA is set to “LSB”.</t> </section>
<section anchor="udp-length-field" numbered="true" toc="default">
<t>If some well-known values are used, the TV can contain the list of these val <name>UDP Length Field</name>
ues, the MO is set to “match-mapping” and the CDA is set to “mapping-sent”.</t> <t>The parser MUST NOT label this field unless the UDP Length value
matches the Payload Length value from the IPv6 header.
<t>Otherwise the port numbers are sent over the LPWAN. The TV is not set, the MO The TV is not set, the MO is set to "ignore", and the CDA is set to
is set to “ignore” and the CDA is set to “value-sent”.</t> "compute-*”.</t>
</section>
</section> <section anchor="UDPchecksum" numbered="true" toc="default">
<section anchor="udp-length-field" title="UDP length field"> <name>UDP Checksum Field</name>
<t>The UDP checksum operation is mandatory with IPv6 for most
<t>The UDP length can be computed from the received data. The TV is not set, the packets, but there are exceptions <xref target="RFC8200" format="default"/>.</t>
MO is set to “ignore” and the CDA is set to “compute-*”.</t> <t>For instance, protocols that use UDP as a tunnel encapsulation may
</section>
<section anchor="UDPchecksum" title="UDP Checksum field">
<t>The UDP checksum operation is mandatory with IPv6 for most
packets but there are exceptions <xref target="RFC8200"></xref>.</t>
<t>For instance, protocols that use UDP as a tunnel encapsulation may
enable zero-checksum mode for a specific port (or set of ports) for enable zero-checksum mode for a specific port (or set of ports) for
sending and/or receiving. <xref target="RFC8200"></xref> requires any node sending and/or receiving. <xref target="RFC8200" format="default"/> requires any node
implementing zero-checksum mode to follow the requirements specified implementing zero-checksum mode to follow the requirements specified
in “Applicability Statement for the Use of IPv6 UDP Datagrams with in "Applicability Statement for the Use of IPv6 UDP Datagrams with
Zero Checksums” <xref target="RFC6936"></xref>.</t> Zero Checksums" <xref target="RFC6936" format="default"/>.</t>
<t>6LoWPAN Header Compression <xref target="RFC6282" format="default"/>
<t>6LoWPAN Header Compression <xref target="RFC6282"></xref> also specifies that also specifies that a UDP
a UDP checksum can be elided by the compressor and recomputed by the decompressor when
checksum can be elided by the compressor and re-computed by the decompressor whe an upper
n an upper
layer guarantees the integrity of the UDP payload and pseudo-header. layer guarantees the integrity of the UDP payload and pseudo-header.
A specific example of this is A specific example of this is
when a message integrity check protects the compressed message when a message integrity check protects the compressed message
between the compressor that elides the UDP checksum and the decompressor between the compressor that elides the UDP checksum and the decompressor
that computes it, that computes it,
with a strength that is identical or better to with a strength that is identical or better to
the UDP checksum.</t> the UDP checksum.</t>
<t>Similarly, a SCHC compressor <bcp14>MAY</bcp14>
<t>Similarly, a SCHC compressor MAY
elide the UDP checksum when another layer guarantees at least equal elide the UDP checksum when another layer guarantees at least equal
integrity protection for the UDP payload and the pseudo-header. integrity protection for the UDP payload and the pseudo-header.
In this case, the TV is not set, the MO is set to “ignore” and the CDA is set to In this case, the TV is not set, the MO is set to "ignore", and the CDA is set t
“compute-*”.</t> o "compute-*".</t>
<t>In particular, when SCHC fragmentation is used, a fragmentation RCS
<t>In particular, when SCHC fragmentation is used, a fragmentation RCS
of 2 bytes or more provides equal or better protection than the UDP of 2 bytes or more provides equal or better protection than the UDP
checksum; in that case, if the compressor is collocated with the checksum; in that case, if the compressor is collocated with the
fragmentation point and the decompressor is collocated with the fragmentation point and the decompressor is collocated with the
packet reassembly point, packet reassembly point,
and if the SCHC Packet is fragmented even when it would fit unfragmented in the L2 MTU, and if the SCHC Packet is fragmented even when it would fit unfragmented in the L2 MTU,
then the compressor MAY verify and then elide the UDP checksum. then the compressor <bcp14>MAY</bcp14> verify and then elide the UDP checksum.
Whether and when the UDP Checksum is elided is to be specified in the Whether and when the UDP Checksum is elided is to be specified in the
Profile.</t> Profile.</t>
<t>Since the compression happens before the fragmentation, implementers
<t>Since the compression happens before the fragmentation, implementers
should understand the risks when dealing with unprotected data below should understand the risks when dealing with unprotected data below
the transport layer and take special care when manipulating that data.</t> the transport layer and take special care when manipulating that data.</t>
<t>In other cases, the checksum <bcp14>SHOULD</bcp14> be explicitly sent
<t>In other cases, the checksum SHOULD be explicitly sent. The TV is not set, th . The TV is not set, the MO is set to "ignore" and the CDA is set to "value-sent
e MO is set to “ignore” and the CDA is set to “value-sent”.</t> ".</t>
</section>
</section> </section>
</section> <section anchor="iana-considerations" numbered="true" toc="default">
<section anchor="iana-considerations" title="IANA Considerations"> <name>IANA Considerations</name>
<t>This document has no IANA actions.</t>
<t>This document has no request to IANA.</t> </section>
<section anchor="SecConsiderations" numbered="true" toc="default">
</section> <name>Security Considerations</name>
<section anchor="SecConsiderations" title="Security considerations"> <t>As explained in <xref target="Overview" format="default"/>, SCHC is exp
ected to be implemented on top of LPWAN technologies,
<t>As explained in <xref target="Overview"/>, SCHC is expected to be implemented
on top of LPWAN technologies,
which are expected to implement security measures.</t> which are expected to implement security measures.</t>
<t>In this section, we analyze the potential security threats that could b
<t>In this section, we analyze the potential security threats that could be intr e introduced
oduced
into an LPWAN by adding the SCHC functionalities.</t> into an LPWAN by adding the SCHC functionalities.</t>
<section anchor="security-considerations-for-schc-compressiondecompression
<section anchor="security-considerations-for-schc-compressiondecompression" titl " numbered="true" toc="default">
e="Security considerations for SCHC Compression/Decompression"> <name>Security Considerations for SCHC Compression/Decompression</name>
<section anchor="forged-schc-packet" numbered="true" toc="default">
<section anchor="forged-schc-packet" title="Forged SCHC Packet"> <name>Forged SCHC Packet</name>
<t>Let’s assume that an attacker is able to send a forged SCHC Packet to a SCHC <t>Let's assume that an attacker is able to send a forged SCHC Packet
Decompressor.</t> to a SCHC decompressor.</t>
<t>Let's first consider the case where the RuleID contained in that fo
<t>Let’s first consider the case where the Rule ID contained in that forged SCHC rged SCHC Packet does not correspond to a Rule allocated in the Rule table.
Packet does not correspond to a Rule allocated in the Rule table. An implementation should detect that the RuleID is invalid and should silently d
An implementation should detect that the Rule ID is invalid and should silently rop the offending SCHC Packet.</t>
drop the offending SCHC Packet.</t> <t>Let's now consider that the RuleID corresponds to a Rule in the tab
le. With the CDAs defined in this document, the reconstructed packet is, at most
<t>Let’s now consider that the Rule ID corresponds to a Rule in the table. With , a constant number of bits bigger than the SCHC Packet that was received.
the CDAs defined in this document, the reconstructed packet is at most a constan This assumes that the compute-* decompression actions produce a bounded number o
t number of bits bigger than the SCHC Packet that was received. f bits, irrespective of the incoming SCHC Packet. This property is true for IPv6
This assumes that the compute-* decompression actions produce a bounded number o Length, UDP Length, and UDP Checksum, for which the compute-* CDA is recommende
f bits, irrespective of the incoming SCHC Packet. This property is true for IPv6 d by this document.</t>
Length, UDP Length and UDP Checksum, for which the compute-* CDA is recommended <t>As a consequence, SCHC decompression does not amplify attacks, beyo
by this document.</t> nd adding a bounded number of bits to the SCHC Packet received. This bound is de
termined by the Rule stored in the receiving device.</t>
<t>As a consequence, SCHC Decompression does not amplify attacks, beyond adding <t>As a general safety measure, a SCHC decompressor should never recon
a bounded number of bits to the SCHC Packet received. This bound is determined b struct a packet larger than MAX_PACKET_SIZE (defined in a Profile, with 1500 byt
y the Rule stored in the receiving device.</t> es as generic default).</t>
</section>
<t>As a general safety measure, a SCHC Decompressor should never re-construct a <section anchor="compressed-packet-size-as-a-side-channel-to-guess-a-sec
packet larger than MAX_PACKET_SIZE (defined in a Profile, with 1500 bytes as gen ret-token" numbered="true" toc="default">
eric default).</t> <name>Compressed Packet Size as a Side Channel to Guess a Secret Token
</name>
</section> <t>Some packet compression methods are known to be susceptible to atta
<section anchor="compressed-packet-size-as-a-side-channel-to-guess-a-secret-toke cks, such as BREACH and CRIME.
n" title="Compressed packet size as a side channel to guess a secret token">
<t>Some packet compression methods are known to be susceptible to attacks, such
as BREACH and CRIME.
The attack involves injecting arbitrary data into the packet and observing the r esulting compressed packet size. The observed size potentially reflects correlat ion between the arbitrary data and some content that was meant to remain secret, such as a security token, thereby allowing the attacker to get at the secret.</ t> The attack involves injecting arbitrary data into the packet and observing the r esulting compressed packet size. The observed size potentially reflects correlat ion between the arbitrary data and some content that was meant to remain secret, such as a security token, thereby allowing the attacker to get at the secret.</ t>
<t>By contrast, SCHC compression takes place header field by header fi
<t>By contrast, SCHC Compression takes place header field by header field, eld,
with the SCHC Packet being a mere concatenation of the compression residues of e ach of the individual field. with the SCHC Packet being a mere concatenation of the compression residues of e ach of the individual field.
Any correlation between header fields does not result in a change in the SCHC Pa cket size compressed under the same Rule.</t> Any correlation between header fields does not result in a change in the SCHC Pa cket size compressed under the same Rule.</t>
<t>If SCHC C/D is used to compress packets that include a secret infor
<t>If SCHC C/D is used to compress packets that include a secret information fie mation field, such as a token,
ld, such as a token,
the Rule set should be designed so that the size of the compression residue for the field to remain secret the Rule set should be designed so that the size of the compression residue for the field to remain secret
is the same irrespective of the value of the secret information. is the same irrespective of the value of the secret information.
This is achieved by e.g., sending this field in extenso with the “ignore” MO and the “value-sent” CDA. This is achieved by, e.g., sending this field in extenso with the "ignore" MO an d the "value-sent" CDA.
This recommendation is disputable if it is ascertained that the Rule set itself will remain secret.</t> This recommendation is disputable if it is ascertained that the Rule set itself will remain secret.</t>
</section>
</section> <section anchor="decompressed-packet-different-from-the-original-packet"
<section anchor="decompressed-packet-different-from-the-original-packet" title=" numbered="true" toc="default">
Decompressed packet different from the original packet"> <name>Decompressed Packet Different from the Original Packet</name>
<t>As explained in <xref target="PProcessing"/>, using FPs with value 0 in Field <t>As explained in <xref target="PProcessing" format="default"/>, usin
Descriptors in a Rule may result in header fields g FPs with value 0 in Field Descriptors in a Rule may result in header fields
appearing in the decompressed packet in an order different from that in the orig inal packet. appearing in the decompressed packet in an order different from that in the orig inal packet.
Likewise, as stated in <xref target="NotSentCDA"/>, using an “ignore” MO togethe r with a “not-sent” CDA will Likewise, as stated in <xref target="NotSentCDA" format="default"/>, using an "i gnore" MO together with a "not-sent" CDA will
result in the header field taking the TV value, which is likely to be different from the original value.</t> result in the header field taking the TV value, which is likely to be different from the original value.</t>
<t>Depending on the protocol, the order of header fields in
<t>Depending on the protocol, the order of header fields in the packet may be fu the packet may or may not be functionally significant.</t>
nctionally significant or not.</t> <t>Furthermore, if the packet is protected by a checksum or a similar
integrity protection mechanism,
<t>Furthermore, if the packet is protected by a checksum or a similar integrity
protection mechanism,
and if the checksum is transmitted instead of being recomputed as part of the de compression, and if the checksum is transmitted instead of being recomputed as part of the de compression,
these situations may result in the packet being considered corrupt and dropped.< /t> these situations may result in the packet being considered corrupt and dropped.< /t>
</section>
</section> </section>
</section> <section anchor="security-considerations-for-schc-fragmentationreassembly"
<section anchor="security-considerations-for-schc-fragmentationreassembly" title numbered="true" toc="default">
="Security considerations for SCHC Fragmentation/Reassembly"> <name>Security Considerations for SCHC Fragmentation/Reassembly</name>
<section anchor="buffer-reservation-attack" numbered="true" toc="default
<section anchor="buffer-reservation-attack" title="Buffer reservation attack"> ">
<t>Let’s assume that an attacker is able to send a forged SCHC Fragment to a SCH <name>Buffer Reservation Attack</name>
C Reassembler.</t> <t>Let's assume that an attacker is able to send a forged SCHC Fragmen
t to a SCHC reassembler.</t>
<t>A node can perform a buffer reservation attack: the receiver will reserve buf <t>A node can perform a buffer reservation attack: the receiver will r
fer space for the SCHC Packet. If the implementation has only one buffer, other eserve buffer space for the SCHC Packet. If the implementation has only one buff
incoming fragmented SCHC Packets will be dropped while the reassembly buffer is er, other incoming fragmented SCHC Packets will be dropped while the reassembly
occupied during the reassembly timeout. Once that timeout expires, the attacker buffer is occupied during the reassembly timeout. Once that timeout expires, the
can repeat the same procedure, and iterate, thus creating a denial of service at attacker can repeat the same procedure, and iterate, thus, creating a denial-of
tack. -service attack.
An implementation may have multiple reassembly buffers. The cost to mount this a ttack is linear with the number of buffers at the target node. An implementation may have multiple reassembly buffers. The cost to mount this a ttack is linear with the number of buffers at the target node.
Better, the cost for an attacker can be increased if individual fragments of mul Better, the cost for an attacker can be increased if individual
tiple SCHC Packets can be stored in the reassembly buffer. The finer grained the fragments of multiple SCHC Packets can be stored in the reassembly
reassembly buffer (downto the smallest tile size), the higher the cost of the a buffer. The finer grained the reassembly buffer (down to the smallest tile size)
ttack. , the higher the cost of the attack.
If buffer overload does occur, a smart receiver could selectively discard SCHC P ackets being reassembled based on the sender behavior, which may help identify w hich SCHC Fragments have been sent by the attacker. If buffer overload does occur, a smart receiver could selectively discard SCHC P ackets being reassembled based on the sender behavior, which may help identify w hich SCHC Fragments have been sent by the attacker.
Another mild counter-measure is for the target to abort the fragmentation/reasse Another mild countermeasure is for the target to abort the fragmentation/reassem
mbly session as early as it detects a non-identical SCHC Fragment duplicate, ant bly session as early as it detects a non-identical SCHC Fragment duplicate, anti
icipating for an eventual corrupt SCHC Packet, so as to save the sender the hass cipating for an eventual corrupt SCHC Packet, so as to save the sender the hassl
le of sending the rest of the fragments for this SCHC Packet.</t> e of sending the rest of the fragments for this SCHC Packet.</t>
</section>
</section> <section anchor="corrupt-fragment-attack" numbered="true" toc="default">
<section anchor="corrupt-fragment-attack" title="Corrupt Fragment attack"> <name>Corrupt Fragment Attack</name>
<t>Let’s assume that an attacker is able to send a forged SCHC Fragment to a SCH <t>Let's assume that an attacker is able to send a forged SCHC Fragmen
C Reassembler. t to a SCHC reassembler.
The malicious node is additionally assumed to be able to hear an incoming commun ication destined to the target node.</t> The malicious node is additionally assumed to be able to hear an incoming commun ication destined to the target node.</t>
<t>It can then send a forged SCHC Fragment that looks like it belongs
<t>It can then send a forged SCHC Fragment that looks like it belongs to a SCHC to a SCHC Packet already being reassembled at the target node.
Packet already being reassembled at the target node. This can cause the SCHC Packet to be considered corrupt and to be dropped by the
This can cause the SCHC Packet to be considered corrupt and be dropped by the re receiver.
ceiver. The amplification happens here by a single spoofed SCHC Fragment rendering a ful
The amplification happens here by a single spoofed SCHC Fragment rendering a ful l sequence of legitimate SCHC Fragments useless.
l sequence of legit SCHC Fragments useless.
If the target uses ACK-Always or ACK-on-Error mode, such a malicious node can al so interfere with If the target uses ACK-Always or ACK-on-Error mode, such a malicious node can al so interfere with
the acknowledgement and repetition algorithm of SCHC F/R. the acknowledgement and repetition algorithm of SCHC F/R.
A single spoofed ACK, with all bitmap bits set to 0, will trigger the repetition of WINDOW_SIZE tiles. This protocol loop amplification depletes the energy sour ce of the target node and consumes the channel bandwidth. A single spoofed ACK, with all Bitmap bits set to 0, will trigger the repetition of WINDOW_SIZE tiles. This protocol loop amplification depletes the energy sour ce of the target node and consumes the channel bandwidth.
Similarly, a spoofed ACK REQ will trigger the sending of a SCHC ACK, Similarly, a spoofed ACK REQ will trigger the sending of a SCHC ACK,
which may be much larger than the ACK REQ if WINDOW_SIZE is large. which may be much larger than the ACK REQ if WINDOW_SIZE is large.
These consequences should be borne in mind when defining profiles for SCHC over specific LPWAN technologies.</t> These consequences should be borne in mind when defining profiles for SCHC over specific LPWAN technologies.</t>
</section>
</section> <section anchor="fragmentation-as-a-way-to-bypass-network-inspection" nu
<section anchor="fragmentation-as-a-way-to-bypass-network-inspection" title="Fra mbered="true" toc="default">
gmentation as a way to bypass Network Inspection"> <name>Fragmentation as a Way to Bypass Network Inspection</name>
<t>Fragmentation is known for potentially allowing to force through a Network In <t>Fragmentation is known for potentially allowing one to force throug
spection device (e.g., firewall) packets that would be rejected if unfragmented. h a Network Inspection device (e.g., firewall) packets that would be rejected if
This involves sending overlapping fragments to rewrite fields whose initial valu unfragmented.
e led the Network Inspection device to allow the flow go through.</t> This involves sending overlapping fragments to rewrite fields whose initial valu
e led the Network Inspection device to allow the flow to go through.</t>
<t>SCHC F/R is expected to be used over one LPWAN link, where no Network Inspect <t>SCHC F/R is expected to be used over one LPWAN link, where no Netwo
ion device is expected to sit. rk Inspection device is expected to sit.
As described in <xref target="FunctionalMapping"/>, even if the SCHC F/R on the As described in <xref target="FunctionalMapping" format="default"/>, even if the
Network infrastructure side is located SCHC F/R on the Network Infrastructure side is located
in the Internet, a tunnel is to be established between it and the NGW.</t> in the Internet, a tunnel is to be established between it and the NGW.</t>
</section>
</section> <section anchor="privacy-issues-associated-with-schc-header-fields" numb
<section anchor="privacy-issues-associated-with-schc-header-fields" title="Priva ered="true" toc="default">
cy issues associated with SCHC header fields"> <name>Privacy Issues Associated with SCHC Header Fields</name>
<t>SCHC F/R allocates a DTag value to fragments belonging to the same SCHC Packe <t>SCHC F/R allocates a DTag value to fragments belonging to the same
t. SCHC Packet.
Concerns were raised that, if DTag is a wide counter that is incremented in a pr edictable fashion for each new fragmented SCHC Packet, Concerns were raised that, if DTag is a wide counter that is incremented in a pr edictable fashion for each new fragmented SCHC Packet,
it might lead to a privacy issue, such as enabling tracking of a device across L PWANs.</t> it might lead to a privacy issue, such as enabling tracking of a device across L PWANs.</t>
<t>However, SCHC F/R is expected to be used over exactly one LPWAN lin
<t>However, SCHC F/R is expected to be used over exactly one LPWAN link. k.
As described in <xref target="FunctionalMapping"/>, even if the SCHC F/R on the As described in <xref target="FunctionalMapping" format="default"/>, even if the
Network infrastructure side is located SCHC F/R on the Network Infrastructure side is located
in the Internet, a tunnel is to be established between it and the NGW. in the Internet, a tunnel is to be established between it and the NGW.
Therefore, assuming the tunnel provides confidentiality, neither the DTag field nor any other SCHC-introduced field is visible over the Internet.</t> Therefore, assuming the tunnel provides confidentiality, neither the DTag field nor any other SCHC-introduced field is visible over the Internet.</t>
</section>
</section> </section>
</section> </section>
</section>
<section anchor="acknowledgements" title="Acknowledgements">
<t>Thanks to (in alphabetical order)
Sergio Aguilar Romero,
David Black,
Carsten Bormann,
Deborah Brungard,
Brian Carpenter,
Philippe Clavier,
Alissa Cooper,
Roman Danyliw,
Daniel Ducuara Beltran,
Diego Dujovne,
Eduardo Ingles Sanchez,
Rahul Jadhav,
Benjamin Kaduk,
Arunprabhu Kandasamy,
Suresh Krishnan,
Mirja Kuehlewind,
Barry Leiba,
Sergio Lopez Bernal,
Antoni Markovski,
Alexey Melnikov,
Georgios Papadopoulos,
Alexander Pelov,
Charles Perkins,
Edgar Ramos,
Alvaro Retana,
Adam Roach,
Shoichi Sakane,
Joseph Salowey,
Pascal Thubert,
and Eric Vyncke
for useful design considerations, reviews and comments.</t>
<t>Carles Gomez has been funded in part by the Spanish Government (Ministerio de
Educacion, Cultura y Deporte) through the Jose
Castillejo grant CAS15/00336, and by the ERDF and the Spanish Government through
project TEC2016-79988-P. Part of his contribution to this work has been carrie
d out during his stay as a visiting scholar at the Computer Laboratory of the Un
iversity of Cambridge.</t>
</section>
</middle> </middle>
<back> <back>
<references>
<name>References</name>
<references>
<name>Normative References</name>
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer
ence.RFC.2119.xml"/>
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer
ence.RFC.6936.xml"/>
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer
ence.RFC.8174.xml"/>
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer
ence.RFC.8200.xml"/>
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer
ence.RFC.8376.xml"/>
</references>
<references>
<name>Informative References</name>
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer
ence.RFC.4944.xml"/>
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer
ence.RFC.5795.xml"/>
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer
ence.RFC.6282.xml"/>
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer
ence.RFC.6437.xml"/>
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer
ence.RFC.7136.xml"/>
<xi:include
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.
8065.xml"/>
<references title='Normative References'> <reference anchor="ETHERNET" target="https://ieeexplore.ieee.org/document/641973
5" quoteTitle="true" derivedAnchor="IEEE-802.3-2012">
<reference anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></
author>
<date year='1997' month='March' />
<abstract><t>In many standards track documents several words are used to signify
the requirements in the specification. These words are often capitalized. This
document defines these words as they should be interpreted in IETF documents.
This document specifies an Internet Best Current Practices for the Internet Comm
unity, 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="RFC6936" target='https://www.rfc-editor.org/info/rfc6936'>
<front>
<title>Applicability Statement for the Use of IPv6 UDP Datagrams with Zero Check
sums</title>
<author initials='G.' surname='Fairhurst' fullname='G. Fairhurst'><organization
/></author>
<author initials='M.' surname='Westerlund' fullname='M. Westerlund'><organizatio
n /></author>
<date year='2013' month='April' />
<abstract><t>This document provides an applicability statement for the use of UD
P transport checksums with IPv6. It defines recommendations and requirements fo
r the use of IPv6 UDP datagrams with a zero UDP checksum. It describes the issu
es and design principles that need to be considered when UDP is used with IPv6 t
o support tunnel encapsulations, and it examines the role of the IPv6 UDP transp
ort checksum. The document also identifies issues and constraints for deploymen
t on network paths that include middleboxes. An appendix presents a summary of
the trade-offs that were considered in evaluating the safety of the update to RF
C 2460 that changes the use of the UDP checksum with IPv6.</t></abstract>
</front>
<seriesInfo name='RFC' value='6936'/>
<seriesInfo name='DOI' value='10.17487/RFC6936'/>
</reference>
<reference anchor="RFC8174" target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></auth
or>
<date year='2017' month='May' />
<abstract><t>RFC 2119 specifies common key words that may be used in protocol s
pecifications. This document aims to reduce the ambiguity by clarifying that on
ly UPPERCASE usage of the key words have the defined special meanings.</t></abs
tract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>
<reference anchor="RFC8200" target='https://www.rfc-editor.org/info/rfc8200'>
<front>
<title>Internet Protocol, Version 6 (IPv6) Specification</title>
<author initials='S.' surname='Deering' fullname='S. Deering'><organization /></
author>
<author initials='R.' surname='Hinden' fullname='R. Hinden'><organization /></au
thor>
<date year='2017' month='July' />
<abstract><t>This document specifies version 6 of the Internet Protocol (IPv6).
It obsoletes RFC 2460.</t></abstract>
</front>
<seriesInfo name='STD' value='86'/>
<seriesInfo name='RFC' value='8200'/>
<seriesInfo name='DOI' value='10.17487/RFC8200'/>
</reference>
<reference anchor="RFC8376" target='https://www.rfc-editor.org/info/rfc8376'>
<front>
<title>Low-Power Wide Area Network (LPWAN) Overview</title>
<author initials='S.' surname='Farrell' fullname='S. Farrell' role='editor'><org
anization /></author>
<date year='2018' month='May' />
<abstract><t>Low-Power Wide Area Networks (LPWANs) are wireless technologies wit
h characteristics such as large coverage areas, low bandwidth, possibly very sma
ll packet and application-layer data sizes, and long battery life operation. Th
is memo is an informational overview of the set of LPWAN technologies being cons
idered in the IETF and of the gaps that exist between the needs of those technol
ogies 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 title='Informative References'>
<reference anchor="RFC4944" target='https://www.rfc-editor.org/info/rfc4944'>
<front>
<title>Transmission of IPv6 Packets over IEEE 802.15.4 Networks</title>
<author initials='G.' surname='Montenegro' fullname='G. Montenegro'><organizatio
n /></author>
<author initials='N.' surname='Kushalnagar' fullname='N. Kushalnagar'><organizat
ion /></author>
<author initials='J.' surname='Hui' fullname='J. Hui'><organization /></author>
<author initials='D.' surname='Culler' fullname='D. Culler'><organization /></au
thor>
<date year='2007' month='September' />
<abstract><t>This document describes the frame format for transmission of IPv6 p
ackets and the method of forming IPv6 link-local addresses and statelessly autoc
onfigured addresses on IEEE 802.15.4 networks. Additional specifications include
a simple header compression scheme using shared context and provisions for pack
et delivery in IEEE 802.15.4 meshes. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4944'/>
<seriesInfo name='DOI' value='10.17487/RFC4944'/>
</reference>
<reference anchor="RFC5795" target='https://www.rfc-editor.org/info/rfc5795'>
<front>
<title>The RObust Header Compression (ROHC) Framework</title>
<author initials='K.' surname='Sandlund' fullname='K. Sandlund'><organization />
</author>
<author initials='G.' surname='Pelletier' fullname='G. Pelletier'><organization
/></author>
<author initials='L-E.' surname='Jonsson' fullname='L-E. Jonsson'><organization
/></author>
<date year='2010' month='March' />
<abstract><t>The Robust Header Compression (ROHC) protocol provides an efficient
, flexible, and future-proof header compression concept. It is designed to oper
ate efficiently and robustly over various link technologies with different chara
cteristics.</t><t>The ROHC framework, along with a set of compression profiles,
was initially defined in RFC 3095. To improve and simplify the ROHC specificati
ons, this document explicitly defines the ROHC framework and the profile for unc
ompressed separately. More specifically, the definition of the framework does n
ot modify or update the definition of the framework specified by RFC 3095.</t><t
>This specification obsoletes RFC 4995. It fixes one interoperability issue tha
t was erroneously introduced in RFC 4995, and adds some minor clarifications. [
STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5795'/>
<seriesInfo name='DOI' value='10.17487/RFC5795'/>
</reference>
<reference anchor="RFC6282" target='https://www.rfc-editor.org/info/rfc6282'>
<front>
<title>Compression Format for IPv6 Datagrams over IEEE 802.15.4-Based Networks</
title>
<author initials='J.' surname='Hui' fullname='J. Hui' role='editor'><organizatio
n /></author>
<author initials='P.' surname='Thubert' fullname='P. Thubert'><organization /></
author>
<date year='2011' month='September' />
<abstract><t>This document updates RFC 4944, &quot;Transmission of IPv6 Packets
over IEEE 802.15.4 Networks&quot;. This document specifies an IPv6 header compr
ession format for IPv6 packet delivery in Low Power Wireless Personal Area Netwo
rks (6LoWPANs). The compression format relies on shared context to allow compre
ssion of arbitrary prefixes. How the information is maintained in that shared c
ontext is out of scope. This document specifies compression of multicast address
es and a framework for compressing next headers. UDP header compression is spec
ified within this framework. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6282'/>
<seriesInfo name='DOI' value='10.17487/RFC6282'/>
</reference>
<reference anchor="RFC6437" target='https://www.rfc-editor.org/info/rfc6437'>
<front>
<title>IPv6 Flow Label Specification</title>
<author initials='S.' surname='Amante' fullname='S. Amante'><organization /></au
thor>
<author initials='B.' surname='Carpenter' fullname='B. Carpenter'><organization
/></author>
<author initials='S.' surname='Jiang' fullname='S. Jiang'><organization /></auth
or>
<author initials='J.' surname='Rajahalme' fullname='J. Rajahalme'><organization
/></author>
<date year='2011' month='November' />
<abstract><t>This document specifies the IPv6 Flow Label field and the minimum r
equirements for IPv6 nodes labeling flows, IPv6 nodes forwarding labeled packets
, and flow state establishment methods. Even when mentioned as examples of poss
ible uses of the flow labeling, more detailed requirements for specific use case
s are out of the scope for this document.</t><t>The usage of the Flow Label fiel
d enables efficient IPv6 flow classification based only on IPv6 main header fiel
ds in fixed positions. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6437'/>
<seriesInfo name='DOI' value='10.17487/RFC6437'/>
</reference>
<reference anchor="RFC7136" target='https://www.rfc-editor.org/info/rfc7136'>
<front>
<title>Significance of IPv6 Interface Identifiers</title>
<author initials='B.' surname='Carpenter' fullname='B. Carpenter'><organization
/></author>
<author initials='S.' surname='Jiang' fullname='S. Jiang'><organization /></auth
or>
<date year='2014' month='February' />
<abstract><t>The IPv6 addressing architecture includes a unicast interface ident
ifier that is used in the creation of many IPv6 addresses. Interface identifiers
are formed by a variety of methods. This document clarifies that the bits in a
n interface identifier have no meaning and that the entire identifier should be
treated as an opaque value. In particular, RFC 4291 defines a method by which t
he Universal and Group bits of an IEEE link-layer address are mapped into an IPv
6 unicast interface identifier. This document clarifies that those two bits are
significant only in the process of deriving interface identifiers from an IEEE
link-layer address, and it updates RFC 4291 accordingly.</t></abstract>
</front>
<seriesInfo name='RFC' value='7136'/>
<seriesInfo name='DOI' value='10.17487/RFC7136'/>
</reference>
<reference anchor="RFC8065" target='https://www.rfc-editor.org/info/rfc8065'>
<front> <front>
<title>Privacy Considerations for IPv6 Adaptation-Layer Mechanisms</title> <title>IEEE Standard for Ethernet</title>
<author initials='D.' surname='Thaler' fullname='D. Thaler'><organization /></au <seriesInfo name="DOI" value="10.1109/IEEESTD.2012.6419735"/>
thor> <seriesInfo name="IEEE Standard" value="802.3-2012"/>
<date year='2017' month='February' /> <author>
<abstract><t>This document discusses how a number of privacy threats apply to te <organization showOnFrontPage="true">IEEE</organization>
chnologies designed for IPv6 over various link-layer protocols, and it provides </author>
advice to protocol designers on how to address such threats in adaptation-layer <date month="December" year="2012"/>
specifications for IPv6 over such links.</t></abstract>
</front> </front>
<seriesInfo name='RFC' value='8065'/>
<seriesInfo name='DOI' value='10.17487/RFC8065'/>
</reference>
<reference anchor="ETHERNET" >
<front>
<title>IEEE Standard for Ethernet</title>
<author >
<organization></organization>
</author>
<date year="n.d."/>
</front>
<seriesInfo name="IEEE" value="standard"/>
<seriesInfo name="DOI" value="10.1109/ieeestd.2018.8457469"/>
</reference> </reference>
</references>
</references> </references>
<section anchor="compressIPv6" numbered="true" toc="default">
<name>Compression Examples</name>
<section anchor="compressIPv6" title="Compression Examples"> <t>This section gives some scenarios of the compression mechanism for IPv6
/UDP. The goal is to illustrate the behavior of SCHC.</t>
<t>This section gives some scenarios of the compression mechanism for IPv6/UDP. <t>The mechanisms defined in this document can be applied to a Dev that em
The goal is to illustrate the behavior of SCHC.</t> beds some applications running over CoAP. In this example, three flows are consi
dered. The first flow is for the device management based
<t>The mechanisms defined in this document can be applied to a Dev that embeds s on CoAP using Link Local IPv6 addresses and UDP ports 123 and 124 for
ome applications running over CoAP. In this example, three flows are considered. Dev and App, respectively. The second flow is a CoAP server for measurements don
The first flow is for the device management based e by the Dev (using ports 5683) and Global IPv6 Address prefixes alpha::IID/64 t
on CoAP using Link Local IPv6 addresses and UDP ports 123 and 124 for Dev and Ap o beta::1/64.
p, respectively.
The second flow will be a CoAP server for measurements done by the Dev (using po
rts 5683) and Global IPv6 Address prefixes alpha::IID/64 to beta::1/64.
The last flow is for legacy applications using different ports numbers, the dest ination IPv6 address prefix is gamma::1/64.</t> The last flow is for legacy applications using different ports numbers, the dest ination IPv6 address prefix is gamma::1/64.</t>
<t><xref target="FigStack" format="default"/> presents the protocol stack.
<t><xref target="FigStack"/> presents the protocol stack. IPv6 and UDP are repre IPv6 and UDP are represented with dotted lines since these protocols are compre
sented with dotted lines since these protocols are compressed on the radio link. ssed on the radio link.</t>
</t> <figure anchor="FigStack">
<name>Simplified Protocol Stack for LP-WAN</name>
<figure title="Simplified Protocol Stack for LP-WAN" anchor="FigStack"><artwork> <artwork name="" type="" align="left" alt=""><![CDATA[
<![CDATA[
Management Data Management Data
+----------+---------+---------+ +----------+---------+---------+
| CoAP | CoAP | legacy | | CoAP | CoAP | legacy |
+----||----+---||----+---||----+ +----||----+---||----+---||----+
. UDP . UDP | UDP | . UDP . UDP | UDP |
................................ ................................
. IPv6 . IPv6 . IPv6 . . IPv6 . IPv6 . IPv6 .
+------------------------------+ +------------------------------+
| SCHC Header compression | | SCHC Header compression |
| and fragmentation | | and fragmentation |
+------------------------------+ +------------------------------+
| LPWAN L2 technologies | | LPWAN L2 technologies |
+------------------------------+ +------------------------------+
Dev or NGW Dev or NGW]]></artwork>
</figure>
]]></artwork></figure>
<t>In some LPWAN technologies, only the Devs have a device ID.
When such technologies are used, it is necessary to statically define an IID for
the Link Local address for the SCHC C/D.</t>
<figure title="Context Rules" anchor="Fig-fields"><artwork><![CDATA[ <figure anchor="Fig-fields">
<name>Context Rules - Rule 0 and Rule 1</name>
<artwork name="" type="" align="left" alt=""><![CDATA[
Rule 0 Rule 0
Special Rule ID used to tag an uncompressed UDP/IPV6 packet. Special RuleID used to tag an uncompressed UDP/IPV6 packet.
Rule 1 Rule 1
+----------------+--+--+--+---------+--------+------------++------+ +----------------+--+--+--+---------+--------+------------++------+
| Field         |FL|FP|DI| Value   | Match | Comp Decomp|| Sent | | FID |FL|FP|DI| TV | MO | CDA || Sent |
| | | | | | Opera. | Action ||[bits]| | | | | | | | ||[bits]|
+----------------+--+--+--+---------+---------------------++------+ +----------------+--+--+--+---------+---------------------++------+
|IPv6 Version |4 |1 |Bi|6 | ignore | not-sent || | |IPv6 Version |4 |1 |Bi|6 | ignore | not-sent || |
|IPv6 DiffServ |8 |1 |Bi|0 | equal | not-sent || | |IPv6 Diffserv |8 |1 |Bi|0 | equal | not-sent || |
|IPv6 Flow Label |20|1 |Bi|0 | equal | not-sent || | |IPv6 Flow Label |20|1 |Bi|0 | equal | not-sent || |
|IPv6 Length |16|1 |Bi| | ignore | compute-* || | |IPv6 Length |16|1 |Bi| | ignore | compute-* || |
|IPv6 Next Header|8 |1 |Bi|17 | equal | not-sent || | |IPv6 Next Header|8 |1 |Bi|17 | equal | not-sent || |
|IPv6 Hop Limit |8 |1 |Bi|255 | ignore | not-sent || | |IPv6 Hop Limit |8 |1 |Bi|255 | ignore | not-sent || |
|IPv6 DevPrefix |64|1 |Bi|FE80::/64| equal | not-sent || | |IPv6 DevPrefix |64|1 |Bi|FE80::/64| equal | not-sent || |
|IPv6 DevIID |64|1 |Bi| | ignore | DevIID || | |IPv6 DevIID |64|1 |Bi| | ignore | DevIID || |
|IPv6 AppPrefix |64|1 |Bi|FE80::/64| equal | not-sent || | |IPv6 AppPrefix |64|1 |Bi|FE80::/64| equal | not-sent || |
|IPv6 AppIID |64|1 |Bi|::1 | equal | not-sent || | |IPv6 AppIID |64|1 |Bi|::1 | equal | not-sent || |
+================+==+==+==+=========+========+============++======+ +================+==+==+==+=========+========+============++======+
|UDP DevPort |16|1 |Bi|123 | equal | not-sent || | |UDP DevPort |16|1 |Bi|123 | equal | not-sent || |
|UDP AppPort |16|1 |Bi|124 | equal | not-sent || | |UDP AppPort |16|1 |Bi|124 | equal | not-sent || |
|UDP Length |16|1 |Bi| | ignore | compute-* || | |UDP Length |16|1 |Bi| | ignore | compute-* || |
|UDP checksum |16|1 |Bi| | ignore | compute-* || | |UDP checksum |16|1 |Bi| | ignore | compute-* || |
+================+==+==+==+=========+========+============++======+ +================+==+==+==+=========+========+============++======+]]></artwork
>
</figure>
<figure anchor="Fig-fields1">
<name>Context Rules - Rule 2</name>
<artwork name="" type="" align="left" alt=""><![CDATA[
Rule 2 Rule 2
+----------------+--+--+--+---------+--------+------------++------+ +----------------+--+--+--+---------+--------+------------++------+
| Field |FL|FP|DI| Value | Match | Action || Sent | | FID |FL|FP|DI| TV | MO | CDA || Sent |
| | | | | | Opera. | Action ||[bits]| | | | | | | | ||[bits]|
+----------------+--+--+--+---------+--------+------------++------+ +----------------+--+--+--+---------+--------+------------++------+
|IPv6 Version |4 |1 |Bi|6 | ignore | not-sent || | |IPv6 Version |4 |1 |Bi|6 | ignore | not-sent || |
|IPv6 DiffServ |8 |1 |Bi|0 | equal | not-sent || | |IPv6 Diffserv |8 |1 |Bi|0 | equal | not-sent || |
|IPv6 Flow Label |20|1 |Bi|0 | equal | not-sent || | |IPv6 Flow Label |20|1 |Bi|0 | equal | not-sent || |
|IPv6 Length |16|1 |Bi| | ignore | compute-* || | |IPv6 Length |16|1 |Bi| | ignore | compute-* || |
|IPv6 Next Header|8 |1 |Bi|17 | equal | not-sent || | |IPv6 Next Header|8 |1 |Bi|17 | equal | not-sent || |
|IPv6 Hop Limit |8 |1 |Bi|255 | ignore | not-sent || | |IPv6 Hop Limit |8 |1 |Bi|255 | ignore | not-sent || |
|IPv6 DevPrefix |64|1 |Bi|[alpha/64, match- |mapping-sent|| 1 | |IPv6 DevPrefix |64|1 |Bi|[alpha/64, match- |mapping-sent|| 1 |
| | | | |fe80::/64] mapping| || | | | | | |fe80::/64] mapping| || |
|IPv6 DevIID |64|1 |Bi| | ignore | DevIID || | |IPv6 DevIID |64|1 |Bi| | ignore | DevIID || |
|IPv6 AppPrefix |64|1 |Bi|[beta/64,| match- |mapping-sent|| 2 | |IPv6 AppPrefix |64|1 |Bi|[beta/64,| match- |mapping-sent|| 2 |
| | | | |alpha/64,| mapping| || | | | | | |alpha/64,| mapping| || |
| | | | |fe80::64]| | || | | | | | |fe80::64]| | || |
|IPv6 AppIID |64|1 |Bi|::1000 | equal | not-sent || | |IPv6 AppIID |64|1 |Bi|::1000 | equal | not-sent || |
+================+==+==+==+=========+========+============++======+ +================+==+==+==+=========+========+============++======+
|UDP DevPort |16|1 |Bi|5683 | equal | not-sent || | |UDP DevPort |16|1 |Bi|5683 | equal | not-sent || |
|UDP AppPort |16|1 |Bi|5683 | equal | not-sent || | |UDP AppPort |16|1 |Bi|5683 | equal | not-sent || |
|UDP Length |16|1 |Bi| | ignore | compute-* || | |UDP Length |16|1 |Bi| | ignore | compute-* || |
|UDP checksum |16|1 |Bi| | ignore | compute-* || | |UDP checksum |16|1 |Bi| | ignore | compute-* || |
+================+==+==+==+=========+========+============++======+ +================+==+==+==+=========+========+============++======+]]></artwork
>
</figure>
<figure anchor="Fig-fields2">
<name>Context Rules - Rule 3</name>
<artwork name="" type="" align="left" alt=""><![CDATA[
Rule 3 Rule 3
+----------------+--+--+--+---------+--------+------------++------+ +----------------+--+--+--+---------+--------+------------++------+
| Field |FL|FP|DI| Value | Match | Action || Sent | | FID |FL|FP|DI| TV | MO | CDA || Sent |
| | | | | | Opera. | Action ||[bits]| | | | | | | | ||[bits]|
+----------------+--+--+--+---------+--------+------------++------+ +----------------+--+--+--+---------+--------+------------++------+
|IPv6 Version |4 |1 |Bi|6 | ignore | not-sent || | |IPv6 Version |4 |1 |Bi|6 | ignore | not-sent || |
|IPv6 DiffServ |8 |1 |Bi|0 | equal | not-sent || | |IPv6 Diffserv |8 |1 |Bi|0 | equal | not-sent || |
|IPv6 Flow Label |20|1 |Bi|0 | equal | not-sent || | |IPv6 Flow Label |20|1 |Bi|0 | equal | not-sent || |
|IPv6 Length |16|1 |Bi| | ignore | compute-* || | |IPv6 Length |16|1 |Bi| | ignore | compute-* || |
|IPv6 Next Header|8 |1 |Bi|17 | equal | not-sent || | |IPv6 Next Header|8 |1 |Bi|17 | equal | not-sent || |
|IPv6 Hop Limit |8 |1 |Up|255 | ignore | not-sent || | |IPv6 Hop Limit |8 |1 |Up|255 | ignore | not-sent || |
|IPv6 Hop Limit |8 |1 |Dw| | ignore | value-sent || 8 | |IPv6 Hop Limit |8 |1 |Dw| | ignore | value-sent || 8 |
|IPv6 DevPrefix |64|1 |Bi|alpha/64 | equal | not-sent || | |IPv6 DevPrefix |64|1 |Bi|alpha/64 | equal | not-sent || |
|IPv6 DevIID |64|1 |Bi| | ignore | DevIID || | |IPv6 DevIID |64|1 |Bi| | ignore | DevIID || |
|IPv6 AppPrefix |64|1 |Bi|gamma/64 | equal | not-sent || | |IPv6 AppPrefix |64|1 |Bi|gamma/64 | equal | not-sent || |
|IPv6 AppIID |64|1 |Bi|::1000 | equal | not-sent || | |IPv6 AppIID |64|1 |Bi|::1000 | equal | not-sent || |
+================+==+==+==+=========+========+============++======+ +================+==+==+==+=========+========+============++======+
|UDP DevPort |16|1 |Bi|8720 | MSB(12)| LSB || 4 | |UDP DevPort |16|1 |Bi|8720 | MSB(12)| LSB || 4 |
|UDP AppPort |16|1 |Bi|8720 | MSB(12)| LSB || 4 | |UDP AppPort |16|1 |Bi|8720 | MSB(12)| LSB || 4 |
|UDP Length |16|1 |Bi| | ignore | compute-* || | |UDP Length |16|1 |Bi| | ignore | compute-* || |
|UDP checksum |16|1 |Bi| | ignore | compute-* || | |UDP checksum |16|1 |Bi| | ignore | compute-* || |
+================+==+==+==+=========+========+============++======+ +================+==+==+==+=========+========+============++======+]]></artwork
>
]]></artwork></figure> </figure>
<t>Figures <xref target="Fig-fields" format="counter"/> to <xref target="F
<t><xref target="Fig-fields"/> describes a example of a Rule set.</t> ig-fields2" format="counter"/> describe an example of a Rule set.</t>
<t>In this example, 0 was chosen as the special RuleID that tags packets t
<t>In this example, 0 was chosen as the special Rule ID that tags packets that c hat cannot be compressed with any compression Rule.</t>
annot be compressed with any compression Rule.</t> <t>All the fields described in Rules 1-3 are present in the IPv6 and UDP h
eaders. The DevIID value is inferred from the L2 header.</t>
<t>All the fields described in Rules 1-3 are present in the IPv6 and UDP headers <t>Rules 2-3 use global addresses. The way the Dev learns the prefix is no
. The DevIID-DID value is found in the L2 header.</t> t in the scope of the document.</t>
<t>Rule 3 compresses each port number to 4 bits.</t>
<t>Rules 2-3 use global addresses. The way the Dev learns the prefix is not in t </section>
he scope of the document.</t> <section anchor="FragExamples" numbered="true" toc="default">
<name>Fragmentation Examples</name>
<t>Rule 3 compresses each port number to 4 bits.</t> <t>This section provides examples for the various fragment reliability mod
es specified in this document.
</section>
<section anchor="FragExamples" title="Fragmentation Examples">
<t>This section provides examples for the various fragment reliability modes spe
cified in this document.
In the drawings, Bitmaps are shown in their uncompressed form.</t> In the drawings, Bitmaps are shown in their uncompressed form.</t>
<t><xref target="Fig-Example-Unreliable" format="default"/> illustrates th
<t><xref target="Fig-Example-Unreliable"/> illustrates the transmission in No-AC e transmission in No-ACK mode of a SCHC Packet that needs 11 SCHC Fragments. FCN
K mode of a SCHC Packet that needs 11 SCHC Fragments. FCN is 1 bit wide.</t> is 1 bit wide.</t>
<figure anchor="Fig-Example-Unreliable">
<figure title="No-ACK mode, 11 SCHC Fragments" anchor="Fig-Example-Unreliable">< <name>No-ACK Mode, 11 SCHC Fragments</name>
artwork><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
       Sender               Receiver Sender Receiver
|-------FCN=0-------->| |-------FCN=0-------->|
|-------FCN=0-------->| |-------FCN=0-------->|
|-------FCN=0-------->| |-------FCN=0-------->|
|-------FCN=0-------->| |-------FCN=0-------->|
|-------FCN=0-------->| |-------FCN=0-------->|
|-------FCN=0-------->| |-------FCN=0-------->|
|-------FCN=0-------->| |-------FCN=0-------->|
|-------FCN=0-------->| |-------FCN=0-------->|
|-------FCN=0-------->| |-------FCN=0-------->|
|-------FCN=0-------->| |-------FCN=0-------->|
|-----FCN=1 + RCS --->| Integrity check: success |-----FCN=1 + RCS --->| Integrity check: success
(End)       (End)]]></artwork>
]]></artwork></figure> </figure>
<t>In the following examples, N (the size of the FCN field) is 3 bits. The
<t>In the following examples, N (the size of the FCN field) is 3 bits. The All-1 All-1 FCN value is therefore 7.</t>
FCN value is 7.</t> <t><xref target="Fig-Example-Win-NoLoss-NACK" format="default"/> illustrat
es the transmission in ACK-on-Error mode of a SCHC Packet fragmented in 11 tiles
<t><xref target="Fig-Example-Win-NoLoss-NACK"/> illustrates the transmission in , with one tile per SCHC Fragment, WINDOW_SIZE=7 and no lost SCHC Fragment.</t>
ACK-on-Error mode of a SCHC Packet fragmented in 11 tiles, with one tile per SCH <figure anchor="Fig-Example-Win-NoLoss-NACK">
C Fragment, WINDOW_SIZE=7 and no lost SCHC Fragment.</t> <name>ACK-on-Error Mode, 11 Tiles, One Tile per SCHC Fragment, No Lost S
CHC Fragment</name>
<figure title="ACK-on-Error mode, 11 tiles, one tile per SCHC Fragment, no lost <artwork name="" type="" align="left" alt=""><![CDATA[
SCHC Fragment." anchor="Fig-Example-Win-NoLoss-NACK"><artwork><![CDATA[ Sender Receiver
       Sender               Receiver
|-----W=0, FCN=6----->| |-----W=0, FCN=6----->|
|-----W=0, FCN=5----->| |-----W=0, FCN=5----->|
|-----W=0, FCN=4----->| |-----W=0, FCN=4----->|
|-----W=0, FCN=3----->| |-----W=0, FCN=3----->|
|-----W=0, FCN=2----->| |-----W=0, FCN=2----->|
|-----W=0, FCN=1----->| |-----W=0, FCN=1----->|
|-----W=0, FCN=0----->| |-----W=0, FCN=0----->|
(no ACK) (no ACK)
|-----W=1, FCN=6----->| |-----W=1, FCN=6----->|
|-----W=1, FCN=5----->| |-----W=1, FCN=5----->|
|-----W=1, FCN=4----->| |-----W=1, FCN=4----->|
|--W=1, FCN=7 + RCS-->| Integrity check: success |--W=1, FCN=7 + RCS-->| Integrity check: success
|<-- ACK, W=1, C=1 ---| C=1 |<-- ACK, W=1, C=1 ---| C=1
(End) (End)]]></artwork>
]]></artwork></figure> </figure>
<t><xref target="Fig-Example-Rel-Window-NACK-Loss" format="default"/> illu
<t><xref target="Fig-Example-Rel-Window-NACK-Loss"/> illustrates the transmissio strates the transmission in ACK-on-Error mode of a SCHC Packet fragmented in 11
n in ACK-on-Error mode of a SCHC Packet fragmented in 11 tiles, with one tile pe tiles, with one tile per SCHC Fragment, WINDOW_SIZE=7, and three lost SCHC Fragm
r SCHC Fragment, WINDOW_SIZE=7 and three lost SCHC Fragments.</t> ents.</t>
<figure anchor="Fig-Example-Rel-Window-NACK-Loss">
<figure title="ACK-on-Error mode, 11 tiles, one tile per SCHC Fragment, lost SCH <name>ACK-on-Error Mode, 11 Tiles, One Tile per SCHC Fragment, Lost SCHC
C Fragments." anchor="Fig-Example-Rel-Window-NACK-Loss"><artwork><![CDATA[ Fragments</name>
        Sender             Receiver <artwork name="" type="" align="left" alt=""><![CDATA[
Sender Receiver
|-----W=0, FCN=6----->| |-----W=0, FCN=6----->|
|-----W=0, FCN=5----->| |-----W=0, FCN=5----->|
|-----W=0, FCN=4--X-->| |-----W=0, FCN=4--X-->|
|-----W=0, FCN=3----->| |-----W=0, FCN=3----->|
|-----W=0, FCN=2--X-->| |-----W=0, FCN=2--X-->|
|-----W=0, FCN=1----->| |-----W=0, FCN=1----->|
|-----W=0, FCN=0----->| 6543210 |-----W=0, FCN=0----->| 6543210
|<-- ACK, W=0, C=0 ---| Bitmap:1101011 |<-- ACK, W=0, C=0 ---| Bitmap:1101011
|-----W=0, FCN=4----->| |-----W=0, FCN=4----->|
|-----W=0, FCN=2----->| |-----W=0, FCN=2----->|
(no ACK) (no ACK)
|-----W=1, FCN=6----->| |-----W=1, FCN=6----->|
|-----W=1, FCN=5----->| |-----W=1, FCN=5----->|
|-----W=1, FCN=4--X-->| |-----W=1, FCN=4--X-->|
|- W=1, FCN=7 + RCS ->| Integrity check: failure |- W=1, FCN=7 + RCS ->| Integrity check: failure
|<-- ACK, W=1, C=0 ---| C=0, Bitmap:1100001 |<-- ACK, W=1, C=0 ---| C=0, Bitmap:1100001
|-----W=1, FCN=4----->| Integrity check: success |-----W=1, FCN=4----->| Integrity check: success
|<-- ACK, W=1, C=1 ---| C=1 |<-- ACK, W=1, C=1 ---| C=1
(End) (End)]]></artwork>
]]></artwork></figure> </figure>
<t><xref target="Figure-Example-ACK-on-Error-VarMTU" format="default"/> sh
<t><xref target="Figure-Example-ACK-on-Error-VarMTU"/> shows an example of a tra ows an example of a transmission in ACK-on-Error mode of a SCHC Packet fragmente
nsmission in ACK-on-Error mode of a SCHC Packet fragmented in d in
73 tiles, with N=5, WINDOW_SIZE=28, M=2 and 3 lost SCHC Fragments.</t> 73 tiles, with N=5, WINDOW_SIZE=28, M=2, and three lost SCHC Fragments.</t>
<figure anchor="Figure-Example-ACK-on-Error-VarMTU">
<figure title="ACK-on-Error mode, variable MTU." anchor="Figure-Example-ACK-on-E <name>ACK-on-Error Mode, Variable MTU</name>
rror-VarMTU"><artwork><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
Sender Receiver Sender Receiver
|-----W=0, FCN=27----->| 4 tiles sent |-----W=0, FCN=27----->| 4 tiles sent
|-----W=0, FCN=23----->| 4 tiles sent |-----W=0, FCN=23----->| 4 tiles sent
|-----W=0, FCN=19----->| 4 tiles sent |-----W=0, FCN=19----->| 4 tiles sent
|-----W=0, FCN=15--X-->| 4 tiles sent (not received) |-----W=0, FCN=15--X-->| 4 tiles sent (not received)
|-----W=0, FCN=11----->| 4 tiles sent |-----W=0, FCN=11----->| 4 tiles sent
|-----W=0, FCN=7 ----->| 4 tiles sent |-----W=0, FCN=7 ----->| 4 tiles sent
|-----W=0, FCN=3 ----->| 4 tiles sent |-----W=0, FCN=3 ----->| 4 tiles sent
|-----W=1, FCN=27----->| 4 tiles sent |-----W=1, FCN=27----->| 4 tiles sent
|-----W=1, FCN=23----->| 4 tiles sent |-----W=1, FCN=23----->| 4 tiles sent
|-----W=1, FCN=19----->| 4 tiles sent |-----W=1, FCN=19----->| 4 tiles sent
|-----W=1, FCN=15----->| 4 tiles sent |-----W=1, FCN=15----->| 4 tiles sent
|-----W=1, FCN=11----->| 4 tiles sent |-----W=1, FCN=11----->| 4 tiles sent
|-----W=1, FCN=7 ----->| 4 tiles sent |-----W=1, FCN=7 ----->| 4 tiles sent
|-----W=1, FCN=3 --X-->| 4 tiles sent (not received) |-----W=1, FCN=3 --X-->| 4 tiles sent (not received)
|-----W=2, FCN=27----->| 4 tiles sent |-----W=2, FCN=27----->| 4 tiles sent
|-----W=2, FCN=23----->| 4 tiles sent |-----W=2, FCN=23----->| 4 tiles sent
^ |-----W=2, FCN=19----->| 1 tile sent ^ |-----W=2, FCN=19----->| 1 tile sent
| |-----W=2, FCN=18----->| 1 tile sent | |-----W=2, FCN=18----->| 1 tile sent
| |-----W=2, FCN=17----->| 1 tile sent | |-----W=2, FCN=17----->| 1 tile sent
|-----W=2, FCN=16----->| 1 tile sent |-----W=2, FCN=16----->| 1 tile sent
s |-----W=2, FCN=15----->| 1 tile sent s |-----W=2, FCN=15----->| 1 tile sent
m |-----W=2, FCN=14----->| 1 tile sent m |-----W=2, FCN=14----->| 1 tile sent
a |-----W=2, FCN=13--X-->| 1 tile sent (not received) a |-----W=2, FCN=13--X-->| 1 tile sent (not received)
l |-----W=2, FCN=12----->| 1 tile sent l |-----W=2, FCN=12----->| 1 tile sent
l |---W=2, FCN=31 + RCS->| Integrity check: failure l |---W=2, FCN=31 + RCS->| Integrity check: failure
e |<--- ACK, W=0, C=0 ---| C=0, Bitmap:1111111111110000111111111111 e |<--- ACK, W=0, C=0 ---| C=0, Bitmap:1111111111110000111111111111
r |-----W=0, FCN=15----->| 1 tile sent r |-----W=0, FCN=15----->| 1 tile sent
|-----W=0, FCN=14----->| 1 tile sent |-----W=0, FCN=14----->| 1 tile sent
L |-----W=0, FCN=13----->| 1 tile sent L |-----W=0, FCN=13----->| 1 tile sent
2 |-----W=0, FCN=12----->| 1 tile sent 2 |-----W=0, FCN=12----->| 1 tile sent
|<--- ACK, W=1, C=0 ---| C=0, Bitmap:1111111111111111111111110000 |<--- ACK, W=1, C=0 ---| C=0, Bitmap:1111111111111111111111110000
M |-----W=1, FCN=3 ----->| 1 tile sent M |-----W=1, FCN=3 ----->| 1 tile sent
T |-----W=1, FCN=2 ----->| 1 tile sent T |-----W=1, FCN=2 ----->| 1 tile sent
U |-----W=1, FCN=1 ----->| 1 tile sent U |-----W=1, FCN=1 ----->| 1 tile sent
|-----W=1, FCN=0 ----->| 1 tile sent |-----W=1, FCN=0 ----->| 1 tile sent
| |<--- ACK, W=2, C=0 ---| C=0, Bitmap:1111111111111101000000000001 | |<--- ACK, W=2, C=0 ---| C=0, Bitmap:1111111111111101000000000001
| |-----W=2, FCN=13----->| Integrity check: success | |-----W=2, FCN=13----->| Integrity check: success
V |<--- ACK, W=2, C=1 ---| C=1 V |<--- ACK, W=2, C=1 ---| C=1
(End) (End)]]></artwork>
]]></artwork></figure> </figure>
<t>In this example, the L2 MTU becomes reduced just before sending the "W=
<t>In this example, the L2 MTU becomes reduced just before sending the “W=2, FCN 2, FCN=19" fragment, leaving space for only one tile in each forthcoming SCHC Fr
=19” fragment, leaving space for only 1 tile in each forthcoming SCHC Fragment. agment.
Before retransmissions, the 73 tiles are carried by a total of 25 SCHC Fragments Before retransmissions, the 73 tiles are carried by a total of 25 SCHC Fragments
, the last 9 being of smaller size.</t> , the last nine being of smaller size.</t>
<t>Note: other sequences of events (e.g., regarding when ACKs are sent by
<t>Note: other sequences of events (e.g., regarding when ACKs are sent by the Re the Receiver) are also allowed by this specification. Profiles may restrict this
ceiver) are also allowed by this specification. Profiles may restrict this flexi flexibility.</t>
bility.</t> <t><xref target="Fig-Example-Rel-Window-ACK-NoLoss" format="default"/> ill
ustrates the transmission in ACK-Always mode of a SCHC Packet fragmented in 11 t
<t><xref target="Fig-Example-Rel-Window-ACK-NoLoss"/> illustrates the transmissi iles, with one tile per SCHC Fragment, with N=3, WINDOW_SIZE=7, and no loss.</t>
on in ACK-Always mode of a SCHC Packet fragmented in 11 tiles, with one tile per <figure anchor="Fig-Example-Rel-Window-ACK-NoLoss">
SCHC Fragment, with N=3, WINDOW_SIZE=7 and no loss.</t> <name>ACK-Always Mode, 11 Tiles, One Tile per SCHC Fragment, No Loss</na
me>
<figure title="ACK-Always mode, 11 tiles, one tile per SCHC Fragment, no loss." <artwork name="" type="" align="left" alt=""><![CDATA[
anchor="Fig-Example-Rel-Window-ACK-NoLoss"><artwork><![CDATA[ Sender Receiver
       Sender               Receiver
|-----W=0, FCN=6----->| |-----W=0, FCN=6----->|
|-----W=0, FCN=5----->| |-----W=0, FCN=5----->|
|-----W=0, FCN=4----->| |-----W=0, FCN=4----->|
|-----W=0, FCN=3----->| |-----W=0, FCN=3----->|
|-----W=0, FCN=2----->| |-----W=0, FCN=2----->|
|-----W=0, FCN=1----->| |-----W=0, FCN=1----->|
|-----W=0, FCN=0----->| |-----W=0, FCN=0----->|
|<-- ACK, W=0, C=0 ---| Bitmap:1111111 |<-- ACK, W=0, C=0 ---| Bitmap:1111111
|-----W=1, FCN=6----->| |-----W=1, FCN=6----->|
|-----W=1, FCN=5----->| |-----W=1, FCN=5----->|
|-----W=1, FCN=4----->| |-----W=1, FCN=4----->|
|--W=1, FCN=7 + RCS-->| Integrity check: success |--W=1, FCN=7 + RCS-->| Integrity check: success
|<-- ACK, W=1, C=1 ---| C=1 |<-- ACK, W=1, C=1 ---| C=1
(End) (End)]]></artwork>
]]></artwork></figure> </figure>
<t><xref target="Fig-Example-Rel-Window-ACK-Loss" format="default"/> illus
<t><xref target="Fig-Example-Rel-Window-ACK-Loss"/> illustrates the transmission trates the transmission in ACK-Always mode of a SCHC Packet fragmented in 11 til
in ACK-Always mode of a SCHC Packet fragmented in 11 tiles, with one tile per S es, with one tile per SCHC Fragment, N=3, WINDOW_SIZE=7 and three lost SCHC Frag
CHC Fragment, N=3, WINDOW_SIZE=7 and three lost SCHC Fragments.</t> ments.</t>
<figure anchor="Fig-Example-Rel-Window-ACK-Loss">
<figure title="ACK-Always mode, 11 tiles, one tile per SCHC Fragment, three lost <name>ACK-Always Mode, 11 Tiles, One Tile per SCHC Fragment, Three Lost
SCHC Fragments." anchor="Fig-Example-Rel-Window-ACK-Loss"><artwork><![CDATA[ SCHC Fragments</name>
       Sender               Receiver <artwork name="" type="" align="left" alt=""><![CDATA[
Sender Receiver
|-----W=0, FCN=6----->| |-----W=0, FCN=6----->|
|-----W=0, FCN=5----->| |-----W=0, FCN=5----->|
|-----W=0, FCN=4--X-->| |-----W=0, FCN=4--X-->|
|-----W=0, FCN=3----->| |-----W=0, FCN=3----->|
|-----W=0, FCN=2--X-->| |-----W=0, FCN=2--X-->|
|-----W=0, FCN=1----->| |-----W=0, FCN=1----->|
|-----W=0, FCN=0----->| 6543210 |-----W=0, FCN=0----->| 6543210
|<-- ACK, W=0, C=0 ---| Bitmap:1101011 |<-- ACK, W=0, C=0 ---| Bitmap:1101011
|-----W=0, FCN=4----->| |-----W=0, FCN=4----->|
|-----W=0, FCN=2----->| |-----W=0, FCN=2----->|
|<-- ACK, W=0, C=0 ---| Bitmap:1111111 |<-- ACK, W=0, C=0 ---| Bitmap:1111111
|-----W=1, FCN=6----->| |-----W=1, FCN=6----->|
|-----W=1, FCN=5----->| |-----W=1, FCN=5----->|
|-----W=1, FCN=4--X-->| |-----W=1, FCN=4--X-->|
|--W=1, FCN=7 + RCS-->| Integrity check: failure |--W=1, FCN=7 + RCS-->| Integrity check: failure
|<-- ACK, W=1, C=0 ---| C=0, Bitmap:11000001 |<-- ACK, W=1, C=0 ---| C=0, Bitmap:11000001
|-----W=1, FCN=4----->| Integrity check: success |-----W=1, FCN=4----->| Integrity check: success
|<-- ACK, W=1, C=1 ---| C=1 |<-- ACK, W=1, C=1 ---| C=1
(End) (End)]]></artwork>
]]></artwork></figure> </figure>
<t><xref target="Fig-Example-Rel-Window-ACK-Loss-Last-A" format="default"/
<t><xref target="Fig-Example-Rel-Window-ACK-Loss-Last-A"/> illustrates the trans > illustrates the transmission in ACK-Always mode of a SCHC Packet fragmented in
mission in ACK-Always mode of a SCHC Packet fragmented in 6 tiles, six tiles,
with one tile per SCHC Fragment, N=3, WINDOW_SIZE=7, three lost SCHC Fragments a with one tile per SCHC Fragment, N=3, WINDOW_SIZE=7, three lost SCHC Fragments,
nd only one retry needed to recover each lost SCHC Fragment.</t> and only one retry needed to recover each lost SCHC Fragment.</t>
<figure anchor="Fig-Example-Rel-Window-ACK-Loss-Last-A">
<figure title="ACK-Always mode, 6 tiles, <name>ACK-Always Mode, Six Tiles, One Tile per SCHC Fragment, Three Lost
one tile per SCHC Fragment, three lost SCHC Fragments." anchor="Fig-Example-Rel- SCHC Fragments</name>
Window-ACK-Loss-Last-A"><artwork><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
Sender Receiver Sender Receiver
|-----W=0, FCN=6----->| |-----W=0, FCN=6----->|
|-----W=0, FCN=5----->| |-----W=0, FCN=5----->|
|-----W=0, FCN=4--X-->| |-----W=0, FCN=4--X-->|
|-----W=0, FCN=3--X-->| |-----W=0, FCN=3--X-->|
|-----W=0, FCN=2--X-->| |-----W=0, FCN=2--X-->|
|--W=0, FCN=7 + RCS-->| Integrity check: failure |--W=0, FCN=7 + RCS-->| Integrity check: failure
|<-- ACK, W=0, C=0 ---| C=0, Bitmap:1100001 |<-- ACK, W=0, C=0 ---| C=0, Bitmap:1100001
|-----W=0, FCN=4----->| Integrity check: failure |-----W=0, FCN=4----->| Integrity check: failure
|-----W=0, FCN=3----->| Integrity check: failure |-----W=0, FCN=3----->| Integrity check: failure
|-----W=0, FCN=2----->| Integrity check: success |-----W=0, FCN=2----->| Integrity check: success
|<-- ACK, W=0, C=1 ---| C=1 |<-- ACK, W=0, C=1 ---| C=1
(End) (End)]]></artwork>
]]></artwork></figure> </figure>
<t><xref target="Fig-Example-Rel-Window-ACK-Loss-Last-B" format="default"/
<t><xref target="Fig-Example-Rel-Window-ACK-Loss-Last-B"/> illustrates the trans > illustrates the transmission in ACK-Always mode of a SCHC Packet fragmented in
mission in ACK-Always mode of a SCHC Packet fragmented in 6 tiles, six tiles,
with one tile per SCHC Fragment, N=3, WINDOW_SIZE=7, three lost SCHC Fragments, and the second SCHC ACK lost.</t> with one tile per SCHC Fragment, N=3, WINDOW_SIZE=7, three lost SCHC Fragments, and the second SCHC ACK lost.</t>
<figure anchor="Fig-Example-Rel-Window-ACK-Loss-Last-B">
<figure title="ACK-Always mode, 6 tiles, <name>ACK-Always Mode, Six Tiles, One Tile per SCHC Fragment, SCHC ACK L
one tile per SCHC Fragment, SCHC ACK loss." anchor="Fig-Example-Rel-Window-ACK-L oss</name>
oss-Last-B"><artwork><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
Sender Receiver Sender Receiver
|-----W=0, FCN=6----->| |-----W=0, FCN=6----->|
|-----W=0, FCN=5----->| |-----W=0, FCN=5----->|
|-----W=0, FCN=4--X-->| |-----W=0, FCN=4--X-->|
|-----W=0, FCN=3--X-->| |-----W=0, FCN=3--X-->|
|-----W=0, FCN=2--X-->| |-----W=0, FCN=2--X-->|
|--W=0, FCN=7 + RCS-->| Integrity check: failure |--W=0, FCN=7 + RCS-->| Integrity check: failure
|<-- ACK, W=0, C=0 ---| C=0, Bitmap:1100001 |<-- ACK, W=0, C=0 ---| C=0, Bitmap:1100001
|-----W=0, FCN=4----->| Integrity check: failure |-----W=0, FCN=4----->| Integrity check: failure
|-----W=0, FCN=3----->| Integrity check: failure |-----W=0, FCN=3----->| Integrity check: failure
|-----W=0, FCN=2----->| Integrity check: success |-----W=0, FCN=2----->| Integrity check: success
|<-X-ACK, W=0, C=1 ---| C=1 |<-X-ACK, W=0, C=1 ---| C=1
timeout | | timeout | |
|--- W=0, ACK REQ --->| ACK REQ |--- W=0, ACK REQ --->| ACK REQ
|<-- ACK, W=0, C=1 ---| C=1 |<-- ACK, W=0, C=1 ---| C=1
(End) (End)]]></artwork>
]]></artwork></figure> </figure>
<t><xref target="Fig-Example-Rel-Window-ACK-Loss-Last-C" format="default"/
<t><xref target="Fig-Example-Rel-Window-ACK-Loss-Last-C"/> illustrates the trans > illustrates the transmission in ACK-Always mode of a SCHC Packet fragmented in
mission in ACK-Always mode of a SCHC Packet fragmented in 6 tiles, six tiles,
with N=3, WINDOW_SIZE=7, with three lost SCHC Fragments, and one retransmitted S CHC Fragment lost again.</t> with N=3, WINDOW_SIZE=7, with three lost SCHC Fragments, and one retransmitted S CHC Fragment lost again.</t>
<figure anchor="Fig-Example-Rel-Window-ACK-Loss-Last-C">
<figure title="ACK-Always mode, 6 tiles, <name>ACK-Always Mode, Six Tiles, Retransmitted SCHC Fragment Lost Again
retransmitted SCHC Fragment lost again." anchor="Fig-Example-Rel-Window-ACK-Loss </name>
-Last-C"><artwork><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
Sender Receiver Sender Receiver
|-----W=0, FCN=6----->| |-----W=0, FCN=6----->|
|-----W=0, FCN=5----->| |-----W=0, FCN=5----->|
|-----W=0, FCN=4--X-->| |-----W=0, FCN=4--X-->|
|-----W=0, FCN=3--X-->| |-----W=0, FCN=3--X-->|
|-----W=0, FCN=2--X-->| |-----W=0, FCN=2--X-->|
|--W=0, FCN=7 + RCS-->| Integrity check: failure |--W=0, FCN=7 + RCS-->| Integrity check: failure
|<-- ACK, W=0, C=0 ---| C=0, Bitmap:1100001 |<-- ACK, W=0, C=0 ---| C=0, Bitmap:1100001
|-----W=0, FCN=4----->| Integrity check: failure |-----W=0, FCN=4----->| Integrity check: failure
|-----W=0, FCN=3----->| Integrity check: failure |-----W=0, FCN=3----->| Integrity check: failure
|-----W=0, FCN=2--X-->| |-----W=0, FCN=2--X-->|
timeout| | timeout| |
|--- W=0, ACK REQ --->| ACK REQ |--- W=0, ACK REQ --->| ACK REQ
|<-- ACK, W=0, C=0 ---| C=0, Bitmap: 1111101 |<-- ACK, W=0, C=0 ---| C=0, Bitmap: 1111101
|-----W=0, FCN=2----->| Integrity check: success |-----W=0, FCN=2----->| Integrity check: success
|<-- ACK, W=0, C=1 ---| C=1 |<-- ACK, W=0, C=1 ---| C=1
(End) (End)]]></artwork>
]]></artwork></figure> </figure>
<t><xref target="Fig-Example-MaxWindFCN" format="default"/> illustrates th
<t><xref target="Fig-Example-MaxWindFCN"/> illustrates the transmission in ACK-A e transmission in ACK-Always mode of a SCHC Packet fragmented in 28 tiles,
lways mode of a SCHC Packet fragmented in 28 tiles, with one tile per SCHC Fragment, N=5, WINDOW_SIZE=24, and two lost SCHC Fragment
with one tile per SCHC Fragment, N=5, WINDOW_SIZE=24 and two lost SCHC Fragments s.</t>
.</t> <figure anchor="Fig-Example-MaxWindFCN">
<name>ACK-Always Mode, 28 Tiles, One Tile per SCHC Fragment, Lost SCHC F
<figure title="ACK-Always mode, 28 tiles, ragments</name>
one tile per SCHC Fragment, lost SCHC Fragments." anchor="Fig-Example-MaxWindFCN <artwork name="" type="" align="left" alt=""><![CDATA[
"><artwork><![CDATA[
Sender Receiver Sender Receiver
|-----W=0, FCN=23----->| |-----W=0, FCN=23----->|
|-----W=0, FCN=22----->| |-----W=0, FCN=22----->|
|-----W=0, FCN=21--X-->| |-----W=0, FCN=21--X-->|
|-----W=0, FCN=20----->| |-----W=0, FCN=20----->|
|-----W=0, FCN=19----->| |-----W=0, FCN=19----->|
|-----W=0, FCN=18----->| |-----W=0, FCN=18----->|
|-----W=0, FCN=17----->| |-----W=0, FCN=17----->|
|-----W=0, FCN=16----->| |-----W=0, FCN=16----->|
|-----W=0, FCN=15----->| |-----W=0, FCN=15----->|
skipping to change at line 2659 skipping to change at line 2391
| | | |
|<--- ACK, W=0, C=0 ---| Bitmap:110111111111101111111111 |<--- ACK, W=0, C=0 ---| Bitmap:110111111111101111111111
|-----W=0, FCN=21----->| |-----W=0, FCN=21----->|
|-----W=0, FCN=10----->| |-----W=0, FCN=10----->|
|<--- ACK, W=0, C=0 ---| Bitmap:111111111111111111111111 |<--- ACK, W=0, C=0 ---| Bitmap:111111111111111111111111
|-----W=1, FCN=23----->| |-----W=1, FCN=23----->|
|-----W=1, FCN=22----->| |-----W=1, FCN=22----->|
|-----W=1, FCN=21----->| |-----W=1, FCN=21----->|
|--W=1, FCN=31 + RCS-->| Integrity check: success |--W=1, FCN=31 + RCS-->| Integrity check: success
|<--- ACK, W=1, C=1 ---| C=1 |<--- ACK, W=1, C=1 ---| C=1
(End) (End)]]></artwork>
]]></artwork></figure> </figure>
</section>
</section> <section anchor="FSM" numbered="true" toc="default">
<section anchor="FSM" title="Fragmentation State Machines"> <name>Fragmentation State Machines</name>
<t>The fragmentation state machines of the sender and the receiver, one fo
<t>The fragmentation state machines of the sender and the receiver, one for each r each of the different reliability modes, are described in the following figure
of the different reliability modes, are described in the following figures:</t> s:</t>
<figure anchor="Fig-NoACKModeSnd">
<figure title="Sender State Machine for the No-ACK Mode" anchor="Fig-NoACKModeSn <name>Sender State Machine for the No-ACK Mode</name>
d"><artwork><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
+===========+ +===========+
+------------+ Init | +------------+ Init |
| FCN=0 +===========+ | FCN=0 +===========+
| No Window | No Window
| No Bitmap | No Bitmap
| +-------+ | +-------+
| +========+==+ | More Fragments | +========+==+ | More Fragments
| | | <--+ ~~~~~~~~~~~~~~~~~~~~ | | | <--+ ~~~~~~~~~~~~~~~~~~~~
+--------> | Send | send Fragment (FCN=0) +--------> | Send | send Fragment (FCN=0)
+===+=======+ +===+=======+
| last fragment | last fragment
| ~~~~~~~~~~~~ | ~~~~~~~~~~~~
| FCN = 1 | FCN = 1
v send fragment+RCS v send fragment+RCS
+============+ +============+
| END | | END |
+============+ +============+]]></artwork>
]]></artwork></figure> </figure>
<figure anchor="Fig-NoACKModeRcv">
<figure title="Receiver State Machine for the No-ACK Mode" anchor="Fig-NoACKMode <name>Receiver State Machine for the No-ACK Mode</name>
Rcv"><artwork><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
+------+ Not All-1 +------+ Not All-1
+==========+=+ | ~~~~~~~~~~~~~~~~~~~ +==========+=+ | ~~~~~~~~~~~~~~~~~~~
| + <--+ set Inactivity Timer | + <--+ set Inactivity Timer
| RCV Frag +-------+ | RCV Frag +-------+
+=+===+======+ |All-1 & +=+===+======+ |All-1 &
All-1 & | | |RCS correct All-1 & | | |RCS correct
RCS wrong | |Inactivity | RCS wrong | |Inactivity |
| |Timer Exp. | | |Timer Exp. |
v | | v | |
+==========++ | v +==========++ | v
| Error |<-+ +========+==+ | Error |<-+ +========+==+
+===========+ | END | +===========+ | END |
+===========+ +===========+]]></artwork>
</figure>
]]></artwork></figure> <figure anchor="Fig-ACKAlwaysSnd">
<name>Sender State Machine for the ACK-Always Mode</name>
<figure title="Sender State Machine for the ACK-Always Mode" anchor="Fig-ACKAlwa <artwork name="" type="" align="left" alt=""><![CDATA[
ysSnd"><artwork><![CDATA[
+=======+ +=======+
| INIT | FCN!=0 & more frags | INIT | FCN!=0 & more frags
| | ~~~~~~~~~~~~~~~~~~~~~~ | | ~~~~~~~~~~~~~~~~~~~~~~
+======++ +--+ send Window + frag(FCN) +======++ +--+ send Window + frag(FCN)
W=0 | | | FCN- W=0 | | | FCN-
Clear lcl_bm | | v set lcl_bm Clear lcl_bm | | v set lcl_bm
FCN=max value | ++==+========+ FCN=max value | ++==+========+
+> | | +> | |
+---------------------> | SEND | +---------------------> | SEND |
| +==+===+=====+ | +==+===+=====+
skipping to change at line 2739 skipping to change at line 2472
+----+ Wait | |Frag | +----+ Wait | |Frag |
not expected wnd | | Bitmap | +=======+ not expected wnd | | Bitmap | +=======+
~~~~~~~~~~~~~~~~ +--->+ ++Retrans_Timer Exp | ~~~~~~~~~~~~~~~~ +--->+ ++Retrans_Timer Exp |
discard frag +==+=+===+=+==+=+| ~~~~~~~~~~~~~~~~~ | discard frag +==+=+===+=+==+=+| ~~~~~~~~~~~~~~~~~ |
| | | ^ ^ |reSend(empty)All-* | | | | ^ ^ |reSend(empty)All-* |
| | | | | |Set Retrans_Timer | | | | | | |Set Retrans_Timer |
| | | | +--+Attempt++ | | | | | +--+Attempt++ |
C_bit==1 & | | | +-------------------------+ C_bit==1 & | | | +-------------------------+
Recv_window==window & | | | all missing frags sent Recv_window==window & | | | all missing frags sent
no more frag| | | ~~~~~~~~~~~~~~~~~~~~~~ no more frag| | | ~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~| |  |   Set Retrans_Timer                 ~~~~~~~~~~~~~~~~~~~~~~~~| | | Set Retrans_Timer
Stop Retrans_Timer| | | Stop Retrans_Timer| | |
+=============+ | | | +=============+ | | |
| END +<--------+ | | | END +<--------+ | |
+=============+ | | Attempt > MAX_ACK_REQUESTS +=============+ | | Attempt > MAX_ACK_REQUESTS
All-1 Window & | | ~~~~~~~~~~~~~~~~~~ All-1 Window & | | ~~~~~~~~~~~~~~~~~~
C_bit ==0 & | v Send Abort C_bit ==0 & | v Send Abort
lcl_bm==recv_bm | +=+===========+ lcl_bm==recv_bm | +=+===========+
            ~~~~~~~~~~~~ +>| ERROR | ~~~~~~~~~~~~ +>| ERROR |
Send Abort +=============+ Send Abort +=============+]]></artwork>
</figure>
]]></artwork></figure> <figure anchor="Fig-ACKAlwaysRcv">
<name>Receiver State Machine for the ACK-Always Mode</name>
<figure title="Receiver State Machine for the ACK-Always Mode" anchor="Fig-ACKAl <artwork name="" type="" align="left" alt=""><![CDATA[
waysRcv"><artwork><![CDATA[
Not All- & w=expected +---+ +---+w = Not expected Not All- & w=expected +---+ +---+w = Not expected
~~~~~~~~~~~~~~~~~~~~~ | | | |~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ | | | |~~~~~~~~~~~~~~~~
Set lcl_bm(FCN) | v v |discard Set lcl_bm(FCN) | v v |discard
++===+===+===+=+ ++===+===+===+=+
+---------------------+     Rcv     +--->* ABORT +---------------------+ Rcv +--->* ABORT
| +------------------+   Window     | | +------------------+ Window |
| |                 +=====+==+=====+ | | +=====+==+=====+
| |       All-0 & w=expect |  ^ w =next & not-All | | All-0 & w=expect | ^ w =next & not-All
| | ~~~~~~~~~~~~~~~~~~ | |~~~~~~~~~~~~~~~~~~~~~ | | ~~~~~~~~~~~~~~~~~~ | |~~~~~~~~~~~~~~~~~~~~~
| | set lcl_bm(FCN) | |expected = next window | | set lcl_bm(FCN) | |expected = next window
| | send lcl_bm | |Clear lcl_bm | | send lcl_bm | |Clear lcl_bm
| | | | | | | |
| | w=expected & not-All | | | | w=expected & not-All | |
| | ~~~~~~~~~~~~~~~~~~ | | | | ~~~~~~~~~~~~~~~~~~ | |
| | set lcl_bm(FCN)+-+ | | +--+ w=next & All-0 | | set lcl_bm(FCN)+-+ | | +--+ w=next & All-0
| | if lcl_bm full | | | | | | ~~~~~~~~~~~~~~~ | | if lcl_bm full | | | | | | ~~~~~~~~~~~~~~~
| | send lcl_bm | | | | | | expected = nxt wnd | | send lcl_bm | | | | | | expected = nxt wnd
| | v | v | | | Clear lcl_bm | | v | v | | | Clear lcl_bm
skipping to change at line 2806 skipping to change at line 2539
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~ v | v +----+All-1 | |~~~~~~~~~~~~~~~~~~~~~~~~~~~~ v | v +----+All-1 |
|set lcl_bm(FCN) +=+=+=+=+==+ |~~~~~~~~~ | |set lcl_bm(FCN) +=+=+=+=+==+ |~~~~~~~~~ |
|send lcl_bm | +<+Send lcl_bm | |send lcl_bm | +<+Send lcl_bm |
+-------------------------->+ END | | +-------------------------->+ END | |
+==========+<---------------+ +==========+<---------------+
--->* ABORT --->* ABORT
In any state In any state
on receiving a SCHC ACK REQ on receiving a SCHC ACK REQ
Send a SCHC ACK for the current window Send a SCHC ACK for the current window]]></artwork>
                            </figure>
]]></artwork></figure> <figure anchor="Fig-ACKonerrorSnd">
<name>Sender State Machine for the ACK-on-Error Mode</name>
<figure title="Sender State Machine for the ACK-on-Error Mode" anchor="Fig-ACKon <artwork name="" type="" align="left" alt=""><![CDATA[
errorSnd"><artwork><![CDATA[
+=======+ +=======+
| | | |
| INIT | | INIT |
| | FCN!=0 & more frags | | FCN!=0 & more frags
+======++ ~~~~~~~~~~~~~~~~~~~~~~ +======++ ~~~~~~~~~~~~~~~~~~~~~~
Frag RuleID trigger | +--+ Send cur_W + frag(FCN); Frag RuleID trigger | +--+ Send cur_W + frag(FCN);
~~~~~~~~~~~~~~~~~~~ | | | FCN--; ~~~~~~~~~~~~~~~~~~~ | | | FCN--;
cur_W=0; FCN=max_value;| | | set [cur_W, cur_Bmp] cur_W=0; FCN=max_value;| | | set [cur_W, cur_Bmp]
clear [cur_W, Bmp_n];| | v clear [cur_W, Bmp_n];| | v
clear rcv_Bmp | ++==+==========+ **BACK_TO_SEND clear rcv_Bmp | ++==+==========+ **BACK_TO_SEND
+->+ | cur_W==rcv_W & +->+ | cur_W==rcv_W &
**BACK_TO_SEND | SEND | [cur_W,Bmp_n]==rcv_Bmp **BACK_TO_SEND | SEND | [cur_W,Bmp_n]==rcv_Bmp
+-------------------------->+ | & more frags +-------------------------->+ | & more frags
| +----------------------->+ | ~~~~~~~~~~~~ | +----------------------->+ | ~~~~~~~~~~~~
| | ++===+=========+ cur_W++; | | ++==+==========+ cur_W++;
| | FCN==0 & more frags| |last frag clear [cur_W, Bmp_n] | | FCN==0 & more frags| |last frag clear [cur_W, Bmp_n]
| | ~~~~~~~~~~~~~~~~~~~~~~~| |~~~~~~~~~ | | ~~~~~~~~~~~~~~~~~~~~~~~| |~~~~~~~~~
| | set cur_Bmp; | |set [cur_W, Bmp_n]; | | set cur_Bmp; | |set [cur_W, Bmp_n];
| |send cur_W + frag(All-0);| |send cur_W + frag(All-1)+RCS; | |send cur_W + frag(All-0);| |send cur_W + frag(All-1)+RCS;
| | set Retrans_Timer| |set Retrans_Timer | | set Retrans_Timer| |set Retrans_Timer
| | | | +-----------------------------------+ | | | | +---------------------------------+
| |Retrans_Timer expires & | | |cur_W==rcv_W&[cur_W,Bmp_n]!=rcv_Bmp| | | | | |cur_W == |
| |more Frags | | | ~~~~~~~~~~~~~~~~~~~ | | |Retrans_Timer expires & | | | rcv_W & [cur_W,Bmp_n]!=rcv_Bmp|
| |~~~~~~~~~~~~~~~~~~~~ | | | Attempts++; W=cur_W | | |more Frags | | | ~~~~~~~~~~~~~~~~~~~ |
| |stop Retrans_Timer; | | | +--------+ rcv_W==Wn &| | |~~~~~~~~~~~~~~~~~~~~ | | | Attempts++; W=cur_W |
| |[cur_W,Bmp_n]==cur_Bmp; v v | | v [Wn,Bmp_n]!=rcv_Bmp| | |stop Retrans_Timer; | | | +--------+ rcv_W==Wn &|
| |cur_W++ +=====+===+=+=+==+ +=+=========+ ~~~~~~~~~~~| | |[cur_W,Bmp_n]==cur_Bmp; v v | | v [Wn,Bmp_n]!=rcv_Bmp|
| +-------------------+ | | Resend | Attempts++;| | |cur_W++ +=====+==+=+=+==+ +=+=========+ ~~~~~~~~~~~|
+----------------------+ Wait x ACK | | Missing | W=Wn | | +-------------------+ | | Resend | Attempts++;|
+--------------------->+ | | Frags(W) +<-------------+ +----------------------+ Wait x ACK | | Missing | W=Wn |
| rcv_W==Wn &+-+ | +======+====+ +--------------------->+ | | Frags(W) +<-----------+
| [Wn,Bmp_n]!=rcv_Bmp| ++=+===+===+==+==+ | | rcv_W==Wn &+-+ | +======+====+
| ~~~~~~~~~~~~~~| ^ | | | ^ | | [Wn,Bmp_n]!=rcv_Bmp| ++=+===+===+==+=+ |
| send (cur_W,+--+ | | | +-------------+ | ~~~~~~~~~~~~~~| ^ | | | ^ |
| send (cur_W,+--+ | | | +------------+
| ALL-0-empty) | | | all missing frag sent(W) | ALL-0-empty) | | | all missing frag sent(W)
| | | | ~~~~~~~~~~~~~~~~~ | | | | ~~~~~~~~~~~~~~~~~
| Retrans_Timer expires &| | | set Retrans_Timer | Retrans_Timer expires &| | | set Retrans_Timer
| No more Frags| | | | No more Frags| | |
| ~~~~~~~~~~~~~~| | | | ~~~~~~~~~~~~~~| | |
| stop Retrans_Timer;| | | | stop Retrans_Timer;| | |
|(re)send frag(All-1)+RCS | | | |(re)send frag(All-1)+RCS | | |
+-------------------------+ | | +-------------------------+ | |
cur_W==rcv_W&| | cur_W==rcv_W&| |
[cur_W,Bmp_n]==rcv_Bmp&| | Attempts > MAX_ACK_REQUESTS [cur_W,Bmp_n]==rcv_Bmp&| | Attempts > MAX_ACK_REQUESTS
No more Frags & RCS flag==OK| | ~~~~~~~~~~ No more Frags & RCS flag==OK| | ~~~~~~~~~~
~~~~~~~~~~~~~~~~~~| | send Abort ~~~~~~~~~~~~~~~~~~| | send Abort
+=========+stop Retrans_Timer| | +===========+ +=========+stop Retrans_Timer| | +===========+
| END +<-----------------+ +->+ ERROR | | END +<-----------------+ +->+ ERROR |
+=========+ +===========+ +=========+ +===========+]]></artwork>
]]></artwork></figure> </figure>
<t>This is an example only. It is not normative.
<t>This is an example only. It is not normative. The specification in <xref target="ACK-on-Error-sender" format="default"/> allow
The specification in <xref target="ACK-on-Error-sender"/> allows for sequences o s for sequences of operations different from the one shown here.</t>
f operations different from the one shown here.</t> <artwork name="" type="" align="left" alt=""><![CDATA[
<figure><artwork><![CDATA[
+=======+ New frag RuleID received +=======+ New frag RuleID received
| | ~~~~~~~~~~~~~ | | ~~~~~~~~~~~~~
| INIT +-------+cur_W=0;clear([cur_W,Bmp_n]); | INIT +-------+cur_W=0;clear([cur_W,Bmp_n]);
+=======+ |sync=0 +=======+ |sync=0
| |
Not All* & rcv_W==cur_W+---+ | +---+ Not All* & rcv_W==cur_W+---+ | +--+
~~~~~~~~~~~~~~~~~~~~ | | | | (E) ~~~~~~~~~~~~~~~~~~~~ | | | | (E)
set[cur_W,Bmp_n(FCN)]| v v v | set[cur_W,Bmp_n(FCN)]| v v v |
++===+=+=+===+=+ ++===+=+=+==+=+
+----------------------+ +--+ All-0&Full[cur_W,Bmp_n] +----------------------+ +--+ All-0&Full[cur_W,Bmp_n]
| ABORT *<---+ Rcv Window | | ~~~~~~~~~~ | ABORT *<---+ Rcv Window | | ~~~~~~~~~~
| +-------------------+ +<-+ cur_W++;set Inact_timer; | +-------------------+ +<-+ cur_W++;set Inact_timer;
| | +->+=+=+=+=+=+====+ clear [cur_W,Bmp_n] | | +->+=+=+=+=+=+===+ clear [cur_W,Bmp_n]
| | All-0 empty(Wn)| | | | ^ ^ | | All-0 empty(Wn)| | | | ^ ^
| | ~~~~~~~~~~~~~~ +----+ | | | |rcv_W==cur_W & sync==0; | | ~~~~~~~~~~~~~~ +----+ | | | |rcv_W==cur_W & sync==0;
| | sendACK([Wn,Bmp_n]) | | | |& Full([cur_W,Bmp_n]) | | sendACK([Wn,Bmp_n]) | | | |& Full([cur_W,Bmp_n])
| | | | | |& All* || last_miss_frag | | | | | |& All* || last_miss_frag
| | | | | |~~~~~~~~~~~~~~~~~~~~~~ | | | | | |~~~~~~~~~~~~~~~~~~~~~~
| | All* & rcv_W==cur_W|(C)| |sendACK([cur_W,Bmp_n]); | | All* & rcv_W==cur_W|(C)| |sendACK([cur_W,Bmp_n]);
| | & sync==0| | | |cur_W++; clear([cur_W,Bmp_n]) | | & sync==0| | | |cur_W++; clear([cur_W,Bmp_n])
| |&no_full([cur_W,Bmp_n])| |(E)| | |&no_full([cur_W,Bmp_n])| |(E)|
| | ~~~~~~~~~~~~~~~~ | | | | +========+ | | ~~~~~~~~~~~~~~~~ | | | | +========+
| | sendACK([cur_W,Bmp_n])| | | | | Error/ | | | sendACK([cur_W,Bmp_n])| | | | | Error/ |
| | | | | | +----+ | Abort | | | | | | | +----+ | Abort |
| | v v | | | | +===+====+ | | v v | | | | +===+====+
| | +===+=+=+=+===+=+ (D) ^ | | +===+=+=+=+===+=+ (D) ^
| | +--+ Wait x | | | | | +--+ Wait x | | |
| | All-0 empty(Wn)+->| Missing Frags |<-+ | | | All-0 empty(Wn)+->| Missing Frags |<-+ |
| | ~~~~~~~~~~~~~~ +=============+=+ | | | ~~~~~~~~~~~~~~ +=============+=+ |
| | sendACK([Wn,Bmp_n]) +--------------+ | | sendACK([Wn,Bmp_n]) +--------------+
| | *ABORT | | *ABORT
v v v v
(A)(B) (A)(B)
(D) All* || last_miss_frag (D) All* || last_miss_frag
(C) All* & sync>0 & rcv_W!=cur_W & sync>0 (C) All* & sync>0 & rcv_W!=cur_W & sync>0
~~~~~~~~~~~~ & Full([rcv_W,Bmp_n]) ~~~~~~~~~~~~ & Full([rcv_W,Bmp_n])
Wn=oldest[not full(W)]; ~~~~~~~~~~~~~~~~~~~~ Wn=oldest[not full(W)]; ~~~~~~~~~~~~~~~~~~~~
sendACK([Wn,Bmp_n]) Wn=oldest[not full(W)]; sendACK([Wn,Bmp_n]) Wn=oldest[not full(W)];
sendACK([Wn,Bmp_n]);sync-- sendACK([Wn,Bmp_n]);sync--
ABORT-->* Uplink Only &
Inact_Timer expires
(E) Not All* & rcv_W!=cur_W || Attempts > MAX_ACK_REQUESTS
~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
sync++; cur_W=rcv_W; send Abort
set[cur_W,Bmp_n(FCN)]
]]></artwork></figure> ABORT-->* Uplink Only &
<figure title="Receiver State Machine for the ACK-on-Error Mode" anchor="Fig-ACK Inact_Timer expires
onerrorRcv"><artwork><![CDATA[ (E) Not All* & rcv_W!=cur_W || Attempts > MAX_ACK_REQUESTS
~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
sync++; cur_W=rcv_W; send Abort
set[cur_W,Bmp_n(FCN)]]]></artwork>
<figure anchor="Fig-ACKonerrorRcv">
<name>Receiver State Machine for the ACK-on-Error Mode</name>
<artwork name="" type="" align="left" alt=""><![CDATA[
(A)(B) (A)(B)
| | | |
| | All-1 & rcv_W==cur_W & RCS!=OK All-0 empty(Wn) | | All-1 & rcv_W==cur_W & RCS!=OK All-0 empty(Wn)
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-+ ~~~~~~~~~~ | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-+ ~~~~~~~~~~
| | sendACK([cur_W,Bmp_n],C=0) | v sendACK([Wn,Bmp_n]) | | sendACK([cur_W,Bmp_n],C=0) | v sendACK([Wn,Bmp_n])
| | +===========+=++ | | +===========+=++
| +--------------------->+ Wait End +-+ | +--------------------->+ Wait End +-+
| +=====+=+====+=+ | All-1 | +=====+=+====+=+ | All-1
| rcv_W==cur_W & RCS==OK | | ^ | & rcv_W==cur_W | rcv_W==cur_W & RCS==OK | | ^ | & rcv_W==cur_W
| ~~~~~~~~~~~~~~~~~~~~~~ | | +---+ & RCS!=OK | ~~~~~~~~~~~~~~~~~~~~~~ | | +---+ & RCS!=OK
| sendACK([cur_W,Bmp_n],C=1) | | ~~~~~~~~~~~~~~~~~~~ | sendACK([cur_W,Bmp_n],C=1) | | ~~~~~~~~~~~~~~~~~~~
| | | sendACK([cur_W,Bmp_n],C=0); | | | sendACK([cur_W,Bmp_n],C=0);
| | | Attempts++ | | | Attempts++
|All-1 & Full([cur_W,Bmp_n]) | | |All-1 & Full([cur_W,Bmp_n]) | |
|& RCS==OK & sync==0 | +-->* ABORT |& RCS==OK & sync==0 | +-->* ABORT
|~~~~~~~~~~~~~~~~~~~ v |~~~~~~~~~~~~~~~~~~~ v
|sendACK([cur_W,Bmp_n],C=1) +=+=========+ |sendACK([cur_W,Bmp_n],C=1) +=+=========+
+---------------------------->+ END | +---------------------------->+ END |
+===========+ +===========+]]></artwork>
</figure>
]]></artwork></figure> </section>
<section anchor="SCHCParams" numbered="true" toc="default">
</section> <name>SCHC Parameters</name>
<section anchor="SCHCParams" title="SCHC Parameters"> <t>This section lists the information that needs to be provided in the LPW
AN technology-specific documents.</t>
<t>This section lists the information that needs to be provided in the LPWAN tec <ul spacing="normal">
hnology-specific documents.</t> <li>Most common uses cases, deployment scenarios.</li>
<li>Mapping of the SCHC architectural elements onto the LPWAN architectu
<t><list style="symbols"> re.</li>
<t>Most common uses cases, deployment scenarios</t> <li>Assessment of LPWAN integrity checking.</li>
<t>Mapping of the SCHC architectural elements onto the LPWAN architecture</t> <li>Various potential channel conditions for the technology and the corr
<t>Assessment of LPWAN integrity checking</t> esponding recommended use of SCHC C/D and SCHC F/R.</li>
<t>Various potential channel conditions for the technology and the correspondi </ul>
ng recommended use of SCHC C/D and F/R</t> <t>This section lists the parameters that need to be defined in the Profil
</list></t> e.</t>
<ul spacing="normal">
<t>This section lists the parameters that need to be defined in the Profile.</t> <li>RuleID numbering scheme, fixed-size or variable-size RuleIDs, number
of Rules, the way the RuleID is transmitted.</li>
<t><list style="symbols"> <li>maximum packet size that should ever be reconstructed by SCHC decomp
<t>Rule ID numbering scheme, fixed-sized or variable-sized Rule IDs, number of ression (MAX_PACKET_SIZE). See <xref target="SecConsiderations" format="default"
Rules, the way the Rule ID is transmitted</t> />.</li>
<t>maximum packet size that should ever be reconstructed by SCHC Decompression <li>Padding: size of the L2 Word (for most LPWAN technologies, this woul
(MAX_PACKET_SIZE). See <xref target="SecConsiderations"/>.</t> d be a byte; for some technologies, a bit).</li>
<t>Padding: size of the L2 Word (for most LPWAN technologies, this would be a <li>
byte; for some technologies, a bit)</t> <t>Decision to use SCHC fragmentation mechanism or not. If yes, the do
<t>Decision to use SCHC fragmentation mechanism or not. If yes, the document m cument must describe: </t>
ust describe: <list style="symbols"> <ul spacing="normal">
<t>reliability mode(s) used, in which cases (e.g., based on link channel c <li>reliability mode(s) used, in which cases (e.g., based on link ch
ondition)</t> annel condition).</li>
<t>Rule ID values assigned to each mode in use</t> <li>RuleID values assigned to each mode in use.</li>
<t>presence and number of bits for DTag (T) for each Rule ID value, lifeti <li>presence and number of bits for DTag (T) for each RuleID value,
me of DTag at the receiver</t> lifetime of DTag at the receiver.</li>
<t>support for interleaved packet transmission, to what extent</t> <li>support for interleaved packet transmission, to what extent.</li
<t>WINDOW_SIZE, for modes that use windows</t> >
<t>number of bits for W (M) for each Rule ID value, for modes that use win <li>WINDOW_SIZE, for modes that use windows.</li>
dows</t> <li>number of bits for W (M) for each RuleID value, for modes that u
<t>number of bits for FCN (N) for each Rule ID value</t> se windows.</li>
<t>what makes an All-0 SCHC Fragment and a SCHC ACK REQ distinguishable (s <li>number of bits for FCN (N) for each RuleID value, meaning of the
ee <xref target="NotLastFrag"/>).</t> FCN values.</li>
<t>what makes an All-1 SCHC Fragment and a SCHC Sender-Abort distinguishab <li>what makes an All-0 SCHC Fragment and a SCHC ACK REQ distinguish
le (see <xref target="LastFrag"/>).</t> able (see <xref target="NotLastFrag" format="default"/>).</li>
<t>size of RCS and algorithm for its computation, for each Rule ID, if dif <li>what makes an All-1 SCHC Fragment and a SCHC Sender-Abort distin
ferent from the default CRC32. Byte fill-up with zeroes or other mechanism, to b guishable (see <xref target="LastFrag" format="default"/>).</li>
e specified.</t> <li>for RuleIDs that use ACK-on-Error mode: when the last tile of a
<t>Retransmission Timer duration for each Rule ID value, if applicable to SCHC Packet is to be sent in a Regular SCHC Fragment, alone in an All-1 SCHC Fra
the SCHC F/R mode</t> gment or with any of these two methods.</li>
<t>Inactivity Timer duration for each Rule ID value, if applicable to the <li>for RuleIDs that use ACK-on-Error mode: if the penultimate tile
SCHC F/R mode</t> of a SCHC Packet is of the regular size only or if it can also be one L2 Word sh
<t>MAX_ACK_REQUESTS value for each Rule ID value, if applicable to the SCH orter.</li>
C F/R mode</t> <li>for RuleIDs that use ACK-on-Error mode: times at which the sende
</list></t> r must listen for SCHC ACKs.</li>
<t>if L2 Word is wider than a bit and SCHC fragmentation is used, value of the <li>size of RCS and algorithm for its computation, for each RuleID,
padding bits (0 or 1). This is needed if different from the default CRC32. Byte fill-up with zeroes or other mechanism
because the padding bits of the last fragment are included in the RCS computatio , to be specified. Support for UDP checksum elision.</li>
n.</t> <li>Retransmission Timer duration for each RuleID value, if applicab
</list></t> le to the SCHC F/R mode.</li>
<li>Inactivity Timer duration for each RuleID value, if applicable t
<t>A Profile may define a delay to be added after each SCHC message transmission o the SCHC F/R mode.</li>
for compliance with local regulations or other constraints imposed by the appli <li>MAX_ACK_REQUESTS value for each RuleID value, if applicable to t
cations.</t> he SCHC F/R mode.</li>
</ul>
<t><list style="symbols"> </li>
<t>In some LPWAN technologies, as part of energy-saving techniques, <li>if L2 Word is wider than a bit and SCHC fragmentation is used, value
downlink transmission is only possible immediately after an uplink transmission. of the padding bits (0 or 1).</li>
In order to avoid potentially high delay in the downlink transmission of a fragm </ul>
ented SCHC Packet, <t>A Profile may define a delay to be added after each SCHC message transm
the SCHC Fragment receiver may perform an uplink transmission as soon as possibl ission for compliance with local regulations or other constraints imposed by the
e after reception of a SCHC applications.</t>
<ul spacing="normal">
<li>In some LPWAN technologies, as part of energy-saving techniques,
Downlink transmission is only possible immediately after an Uplink transmission.
In order to avoid potentially high delay in the Downlink transmission of a fragm
ented SCHC Packet,
the SCHC Fragment receiver may perform an Uplink transmission as soon as possibl
e after reception of a SCHC
Fragment that is not the last one. Fragment that is not the last one.
Such uplink transmission may be triggered by the L2 (e.g., an L2 ACK sent in res Such Uplink transmission may be triggered by the L2 (e.g., an L2 ACK sent in res
ponse to a SCHC Fragment encapsulated ponse to a SCHC Fragment encapsulated
in a L2 PDU that requires an L2 ACK) or it may be triggered from an upper layer. in a L2 PDU that requires an L2 ACK) or it may be triggered from an upper layer.
See <xref target="AsymLinks"/>.</t> See <xref target="AsymLinks" format="default"/>.</li>
<t>the following parameters need to be addressed in documents other than this <li>
one but not necessarily in <t>the following parameters need to be addressed in documents other th
the LPWAN technology-specific documents: <list style="symbols"> an this one but not necessarily in
<t>The way the Contexts are provisioned</t> the LPWAN technology-specific documents: </t>
<t>The way the Rules are generated</t> <ul spacing="normal">
</list></t> <li>The way the Contexts are provisioned.</li>
</list></t> <li>The way the Rules are generated.</li>
</ul>
</section> </li>
<section anchor="MultWinSizes" title="Supporting multiple window sizes for fragm </ul>
entation"> </section>
<section anchor="MultWinSizes" numbered="true" toc="default">
<t>For ACK-Always or ACK-on-Error, implementers may opt to support a single wind <name>Supporting Multiple Window Sizes for Fragmentation</name>
ow size or multiple window sizes. The latter, when feasible, may provide perfor <t>For ACK-Always or ACK-on-Error, implementers may opt to support a singl
mance optimizations. For example, a large window size should be used for packet e window size or multiple window sizes. The latter, when feasible, may provide
s that need to be split into a large number of tiles. However, when the number o performance optimizations. For example, a large WINDOW_SIZE should be used for
f tiles required to carry a packet is low, a smaller window size, and thus a sho packets that need to be split into a large number of tiles. However, when the nu
rter Bitmap, may be sufficient to provide reception status on all tiles. If mult mber of tiles required to carry a packet is low, a smaller WINDOW_SIZE and, thus
iple window sizes are supported, the Rule ID signals the window size in use for , a shorter Bitmap, may be sufficient to provide reception status on all tiles.
a specific packet transmission.</t> If multiple window sizes are supported, the RuleID signals what WINDOW_SIZE is i
n use for a specific packet transmission.</t>
</section> </section>
<section anchor="AsymLinks" title="ACK-Always and ACK-on-Error on quasi-bidirect <section anchor="AsymLinks" numbered="true" toc="default">
ional links"> <name>ACK-Always and ACK-on-Error on Quasi-Bidirectional Links</name>
<t>The ACK-Always and ACK-on-Error modes of SCHC F/R are bidirectional pro
<t>The ACK-Always and ACK-on-Error modes of SCHC F/R are bidirectional protocols tocols:
:
they require a feedback path from the reassembler to the fragmenter.</t> they require a feedback path from the reassembler to the fragmenter.</t>
<t>Some LPWAN technologies provide quasi-bidirectional connectivity,
<t>Some LPWAN technologies provide quasi-bidirectional connectivity, whereby a Downlink transmission from the Network Infrastructure can only take pl
whereby a downlink transmission from the Network Infrastructure can only take pl ace
ace right after an Uplink transmission by the Dev.</t>
right after an uplink transmission by the Dev.</t> <t>When using SCHC F/R to send fragmented SCHC Packets Downlink over these
quasi-bidirectional links,
<t>When using SCHC F/R to send fragmented SCHC Packets downlink over these quasi the following situation may arise: if an Uplink SCHC ACK is lost,
-bidirectional links, the SCHC ACK REQ message by the sender could be stuck indefinitely in the Downli
the following situation may arise: if an uplink SCHC ACK is lost, nk queue
the SCHC ACK REQ message by the sender could be stuck indefinitely in the downli
nk queue
at the Network Infrastructure, waiting for a transmission opportunity.</t> at the Network Infrastructure, waiting for a transmission opportunity.</t>
<t>There are many ways by which this deadlock can be avoided.
<t>There are many ways by which this deadlock can be avoided. The Dev application might be sending recurring Uplink messages such as keep-aliv
The Dev application might be sending recurring uplink messages such as keep-aliv e,
e, or the Dev application stack might be sending other recurring Uplink messages as
or the Dev application stack might be sending other recurring uplink messages as part of its operation.
part of its operation.
However, these are out of the control of this generic SCHC specification.</t> However, these are out of the control of this generic SCHC specification.</t>
<t>In order to cope with quasi-bidirectional links, a SCHC-over-foo specif
<t>In order to cope with quasi-bidirectional links, a SCHC-over-foo specificatio ication may want to amend
n may want to amend
the SCHC F/R specification to add a timer-based retransmission of the SCHC ACK. the SCHC F/R specification to add a timer-based retransmission of the SCHC ACK.
Below is an example of the suggested behavior for ACK-Always mode. Below is an example of the suggested behavior for ACK-Always mode.
Because it is an example, <xref target="RFC2119"/> language is deliberately not Because it is an example, <xref target="RFC2119" format="default"/> language is
used here.</t> deliberately not used here.</t>
<t>For Downlink transmission of a fragmented SCHC Packet in ACK-Always mod
<t>For downlink transmission of a fragmented SCHC Packet in ACK-Always mode, the e, the SCHC Fragment receiver may support timer-based SCHC ACK retransmission. I
SCHC Fragment receiver may support timer-based SCHC ACK retransmission. In this n this mechanism, the SCHC Fragment receiver initializes and starts a timer (the
mechanism, the SCHC Fragment receiver initializes and starts a timer (the Uplin UplinkACK Timer) after the transmission of a SCHC ACK, except when the SCHC ACK
kACK Timer) after the transmission of a SCHC ACK, except when the SCHC ACK is se is sent in response to the last SCHC Fragment of a packet (All-1 fragment). In
nt in response to the last SCHC Fragment of a packet (All-1 fragment). In the la the latter case, the SCHC Fragment receiver does not start a timer after transmi
tter case, the SCHC Fragment receiver does not start a timer after transmission ssion of the SCHC ACK.</t>
of the SCHC ACK.</t> <t>If, after transmission of a SCHC ACK that is not an All-1 fragment, and
before expiration of the corresponding UplinkACK timer, the SCHC Fragment recei
<t>If, after transmission of a SCHC ACK that is not an All-1 fragment, and befor ver receives a SCHC Fragment that belongs to the current window (e.g., a missing
e expiration of the corresponding UplinkACK timer, the SCHC Fragment receiver re SCHC Fragment from the current window) or to the next window, the UplinkACK tim
ceives a SCHC Fragment that belongs to the current window (e.g., a missing SCHC er for the SCHC ACK is stopped. However, if the UplinkACK timer expires, the SCH
Fragment from the current window) or to the next window, the UplinkACK timer for C ACK is resent and the UplinkACK timer is reinitialized and restarted.</t>
the SCHC ACK is stopped. However, if the UplinkACK timer expires, the SCHC ACK <t>The default initial value for the UplinkACK Timer, as well as the maxim
is resent and the UplinkACK timer is reinitialized and restarted.</t> um number of retries for a specific SCHC ACK, denoted MAX_ACK_REQUESTS, is to be
defined in a Profile.
<t>The default initial value for the UplinkACK Timer, as well as the maximum num
ber of retries for a specific SCHC ACK, denoted MAX_ACK_REQUESTS, is to be defin
ed in a Profile.
The initial value of the UplinkACK timer is expected to be greater than that of the Retransmission timer, The initial value of the UplinkACK timer is expected to be greater than that of the Retransmission timer,
in order to make sure that a (buffered) SCHC Fragment to be retransmitted finds an opportunity for that transmission. in order to make sure that a (buffered) SCHC Fragment to be retransmitted finds an opportunity for that transmission.
One exception to this recommendation is the special case of the All-1 SCHC Fragm ent transmission.</t> One exception to this recommendation is the special case of the All-1 SCHC Fragm ent transmission.</t>
<t>When the SCHC Fragment sender transmits the All-1 SCHC Fragment,
<t>When the SCHC Fragment sender transmits the All-1 SCHC Fragment,
it starts its Retransmission Timer with a large timeout value (e.g., several tim es that of the initial UplinkACK Timer). it starts its Retransmission Timer with a large timeout value (e.g., several tim es that of the initial UplinkACK Timer).
If a SCHC ACK is received before expiration of this timer, If a SCHC ACK is received before expiration of this timer,
the SCHC Fragment sender retransmits any lost SCHC Fragments as reported by the SCHC ACK, the SCHC Fragment sender retransmits any lost SCHC Fragments as reported by the SCHC ACK,
or if the SCHC ACK confirms successful reception of all SCHC Fragments of the la st window, or if the SCHC ACK confirms successful reception of all SCHC Fragments of the la st window,
the transmission of the fragmented SCHC Packet is considered complete. the transmission of the fragmented SCHC Packet is considered complete.
If the timer expires, and no SCHC ACK has been received since the start of the t imer, If the timer expires, and no SCHC ACK has been received since the start of the t imer,
the SCHC Fragment sender assumes that the All-1 SCHC Fragment has been successfu lly received the SCHC Fragment sender assumes that the All-1 SCHC Fragment has been successfu lly received
(and possibly, the last SCHC ACK has been lost: this mechanism assumes that the Retransmission Timer for the All-1 SCHC Fragment is long enough to allow several SCHC ACK retries if the All-1 SCHC Fragment has not been received by the SCHC F ragment receiver, and it also assumes that it is unlikely that several ACKs beco me all lost).</t> (and possibly, the last SCHC ACK has been lost: this mechanism assumes that the Retransmission Timer for the All-1 SCHC Fragment is long enough to allow several SCHC ACK retries if the All-1 SCHC Fragment has not been received by the SCHC F ragment receiver, and it also assumes that it is unlikely that several ACKs beco me all lost).</t>
</section> </section>
<section anchor="acknowledgements" numbered="false" toc="default">
<name>Acknowledgements</name>
<t>Thanks to (in alphabetical order)
<contact fullname="Sergio Aguilar Romero"/>,
<contact fullname="David Black"/>,
<contact fullname="Carsten Bormann"/>,
<contact fullname="Deborah Brungard"/>,
<contact fullname="Brian Carpenter"/>,
<contact fullname="Philippe Clavier"/>,
<contact fullname="Alissa Cooper"/>,
<contact fullname="Roman Danyliw"/>,
<contact fullname="Daniel Ducuara Beltran"/>,
<contact fullname="Diego Dujovne"/>,
<contact fullname="Eduardo Ingles Sanchez"/>,
<contact fullname="Rahul Jadhav"/>,
<contact fullname="Benjamin Kaduk"/>,
<contact fullname="Arunprabhu Kandasamy"/>,
<contact fullname="Suresh Krishnan"/>,
<contact fullname="Mirja Kuehlewind"/>,
<contact fullname="Barry Leiba"/>,
<contact fullname="Sergio Lopez Bernal"/>,
<contact fullname="Antoni Markovski"/>,
<contact fullname="Alexey Melnikov"/>,
<contact fullname="Georgios Papadopoulos"/>,
<contact fullname="Alexander Pelov"/>,
<contact fullname="Charles Perkins"/>,
<contact fullname="Edgar Ramos"/>,
<contact fullname="Alvaro Retana"/>,
<contact fullname="Adam Roach"/>,
<contact fullname="Shoichi Sakane"/>,
<contact fullname="Joseph Salowey"/>,
<contact fullname="Pascal Thubert"/>,
and <contact fullname="Eric Vyncke"/>
for useful design considerations, reviews and comments.</t>
<t><contact fullname="Carles Gomez"/> has been funded in part by the Spani
sh Government (Ministerio de Educacion, Cultura y Deporte) through the Jose
Castillejo grant CAS15/00336 and by the ERDF and the Spanish Government through
project TEC2016-79988-P. Part of his contribution to this work has been carried
out during his stay as a visiting scholar at the Computer Laboratory of the Uni
versity of Cambridge.</t>
</section>
</back> </back>
<!-- ##markdown-source:
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
DJGiSAQf+x3kEor51AncB/tS75Jb+tnt+PQUqQSZoQcUQx1Qa6OUQdKYpaRX
SsmljlgZMqQ3KXCX7D3cV4wdkHd0C0BzLPGeGuml7vgmJb/kqjAXgItr/fLE
eTl5mO3B/23vyZbbOJJ8x1eUZyIYhBrgAKQui4IjdMYqVqK8JCVOhMNmNMEm
iTUOGg2Q4rjlb5lvmS/bvOrsKhyU5LFn1RZNAp11ZeVVWVWZ9Xh2mfMvpH4P
OMvMNFWylfuvf9p/qnr5unr5ffX8VaXe03INvqyA4TCCK/yB2k/2nKsKQ8LN
MLpcLShd5fwzX1H4ty3440nfkGRV/YB+qR+rNcfkAzpjIl56L3HDsIG7quqq
6umgum97IvlQKqV3eqknJlgeV2KicMF3D3UlHVsJHwVfUgkFG3pN8W+q7c4t
K5FjavRd975U4iDWDEcfVLsTqcSJh2KH032wXk9sGAkHJ9v37q2H2OLqe9Y4
qrp/Vyp5+eJh59Ej0Dsr9oQvQvN3ppIYTlzAsBIwBD69J3I/2u8J6NAVEZv1
gidz/tmvgj/og3xCsqdLQIBX3OXx6QSNoBWnGCtBlMQqubtOJQ7B3o5ivQsq
t6zkcyC2wXJ6+zNLXDuIUNoqV9h6cvLfKGyTw/kqbP+cwvYHWnOAiNMRRVTl
3pylSrpqCbGdFSInf1RS2AP+HSX2D7hiwtFU6eFsLxuOQUm1dDjLcAIoqZx3
C3CS0h2dTmcVOvnSugNXsDKK2+uONSv5T9MdO191x1fdsSLpfknd8e5ybd1R
r+T5dXQ49vgzV/JwmQLSwnbV4Xw53UEerzV68geX2A8fbHcEJxiot7vdrCg0
rsYU9uTuMom9ZiX/ORLbD1cvJw/ETyWh5ThwDDqk/KhnTkD13I+Zro/yO5dG
jZe8Qxdn+ni2gQ550A544CHi86v5eXBTw8bjcjxGkmLpxvMLyj2QJ5J4Wt81
cbeLORpOt73DUazYc6sPcMbCzrMTn7mt/fyVE7/+jO+cmcvh+uZ/g9vYhjbw
UNg5u8SN654rpCMu4ksfFvlUB84xDmocstRd9ieX5mCRc/mOta7FSsl7+07w
F/S33dXJeRrhWRtnUwdf6I8fgz0dGxJAw2vnH0bkwdNeZ/bY2dDE3MKTYWV4
b927PSiRek+nOR7SKVvqKZ3fkog1F3iihzEwmPruQjz0jQNiwpR+t9+Nuflh
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
Ga0x3uOTXlECOM6YRzSGyMGdgf8DoyKqTzpRAgA=
</rfc> </rfc>
 End of changes. 213 change blocks. 
3989 lines changed or deleted 2923 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/