<?xmlversion="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>version='1.0' encoding='UTF-8'?> <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.3 --> <!DOCTYPE rfc SYSTEM"rfc2629.dtd" [ ]>"rfc2629-xhtml.ent"> <?rfc symrefs="yes"?><?rfc sortrefs="yes"?> <?rfc strict="yes"?> <?rfc compact="yes"?> <?rfc toc="yes"?><rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lpwan-ipv6-static-context-hc-24"category="std">number="8724" category="std" obsoletes="" updates="" submissionType="IETF" consensus='true' xml:lang="en" symRefs="true" sortRefs="true" tocInclude="true" version="3" > <!-- xml2rfc v2v3 conversion 2.38.0 --> <front> <title abbrev="LPWANSCHC">StaticSCHC">SCHC: Generic Framework for Static Context Header Compression(SCHC)andfragmentation for LPWAN, application to UDP/IPv6</title>Fragmentation</title> <seriesInfo name="RFC" value="8724"/> <author initials="A." surname="Minaburo" fullname="Ana Minaburo"> <organization>Acklio</organization> <address> <postal> <street>1137A avenue des Champs Blancs</street> <city>35510 Cesson-Sevigne Cedex</city> <country>France</country> </postal> <email>ana@ackl.io</email> </address> </author> <author initials="L." surname="Toutain" fullname="Laurent Toutain"><organization>IMT-Atlantique</organization><organization>IMT Atlantique</organization> <address> <postal> <street>2 rue de la Chataigneraie</street> <street>CS 17607</street> <city>35576 Cesson-Sevigne Cedex</city> <country>France</country> </postal> <email>Laurent.Toutain@imt-atlantique.fr</email> </address> </author> <author initials="C." surname="Gomez" fullname="Carles Gomez"> <organization>UniversitatPolitècnicaPolitecnica de Catalunya</organization> <address> <postal> <street>C/Esteve Terradas, 7</street> <street>08860 Castelldefels</street> <country>Spain</country> </postal> <email>carlesgo@entel.upc.edu</email> </address> </author> <author initials="D." surname="Barthel" fullname="Dominique Barthel"> <organization>Orange Labs</organization> <address> <postal> <street>28 chemin du VieuxChêne</street>Chene</street> <street>38243 Meylan</street> <country>France</country> </postal> <email>dominique.barthel@orange.com</email> </address> </author> <author initials="JC." surname="Zuniga" fullname="Juan Carlos Zuniga"> <organization>SIGFOX</organization> <address> <postal> <street>425 rue Jean Rostand</street><street>Labege 31670</street><street>31670 Labege</street> <country>France</country> </postal> <email>JuanCarlos.Zuniga@sigfox.com</email> </address> </author> <dateyear="2019" month="December" day="05"/>year="2020" month="April"/> <workgroup>lpwan Working Group</workgroup> <keyword>header compression</keyword> <keyword>compression</keyword> <keyword>fragmentation</keyword> <keyword>static context</keyword> <keyword>rule-based</keyword> <keyword>LPWAN</keyword> <keyword>LPWANs</keyword> <keyword>low power</keyword> <keyword>low-power</keyword> <keyword>6LoWPAN</keyword> <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> <abstract> <t>This document defines the Static Context Header Compression and fragmentation (SCHC) framework, which provides both a header compression mechanism and an optional fragmentation mechanism. SCHC has been designedfor Low Powerwith Low-Power Wide Area Networks(LPWAN).</t>(LPWANs) in mind.</t> <t>SCHC compression is based on a common static context stored both in the LPWAN device and in the network infrastructure side. This document defines a generic header compression mechanism and its application to compress IPv6/UDP headers.</t> <t>This document also specifies an optional fragmentation and reassembly mechanism. It can be used to support the IPv6 MTU requirement over the LPWAN technologies. Fragmentation is needed for IPv6 datagrams that, after SCHC compression or when such compression was not possible, still exceed thelayer-2Layer 2 maximum payload size.</t> <t>The SCHC header compression and fragmentation mechanisms are independent of the specific LPWAN technology over which they are used. This document defines generic functionalities and offers flexibility with regard to parameter settings and mechanism choices. This document standardizes the exchange over the LPWAN between two SCHC entities. Settings and choices specific to a technology or a product are expected to be grouped into profiles, which are specified in other documents. Data models for the context and profiles are out of scope.</t> </abstract> </front> <middle> <section anchor="Introduction"title="Introduction">numbered="true" toc="default"> <name>Introduction</name> <t>This document defines the Static Context Header Compression and fragmentation (SCHC) framework, which provides both a header compression mechanism and an optional fragmentation mechanism. SCHC has been designedfor Low Powerwith Low-Power Wide Area Networks(LPWAN).</t>(LPWANs) in mind.</t> <t>LPWAN technologies impose some strict limitations on traffic. For instance, devices sleep most of the time and may only receive data during short periods of time after transmission, in order to preserve battery. LPWAN technologies are also characterized by a greatly reduced data unit and/or payload size (see <xreftarget="RFC8376"/>).</t>target="RFC8376" format="default"/>).</t> <t>Header compression is needed for efficient Internet connectivity to a node within anLPWAN network.LPWAN. The following properties ofLPWAN networksLPWANs can be exploited to get an efficient header compression:</t><t><list style="symbols"> <t>The<ul spacing="normal"> <li>The network topology is star-oriented, which means that all packets 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) exchanging information with LPWAN Application Servers(App)(Apps) through a Network Gateway(NGW).</t> <t>Because(NGW).</li> <li>Because devices embed built-in applications, the traffic flows to be compressed are known in advance. Indeed, new applications are less frequently installed in an LPWANdevice,device than they are in a general-purpose computer orsmartphone.</t> </list></t>smartphone.</li> </ul> <t>SCHC compression uses a Context (a set of Rules) in which information about header 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 avoids the need for complex resynchronization mechanisms. Indeed, a return path may be more restricted/expensive, or may sometimes be completely unavailable <xreftarget="RFC8376"/>.target="RFC8376" format="default"/>. A compression protocol that relies on feedback is not compatible with the characteristics of such LPWANs.</t> <t>In most cases, a small Rule identifier is enough to represent the full IPv6/UDP headers. The SCHC header compression mechanism is independent of the specific LPWAN technology over which it is used.</t> <t>Furthermore, some LPWAN technologies do not provide a fragmentation functionality; to support the IPv6 MTU requirement of 1280 bytes <xreftarget="RFC8200"/>,target="RFC8200" format="default"/>, they require a fragmentation protocol at the adaptation layer below IPv6. Accordingly, this document defines an optional fragmentation/reassembly mechanismforto help LPWAN technologiestosupport the IPv6 MTU requirement.</t> <t>This document defines generic functionality and offers flexibility with regard toparametersparameter settings and mechanism choices. Technology-specific settings are expected to be grouped into Profiles specified in other documents.</t> </section> <section anchor="requirements-notation"title="Requirements Notation"> <t>Thenumbered="true" toc="default"> <name>Requirements Notation</name> <t> The key words“MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”,"<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and“OPTIONAL”"<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described inBCP 14BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shownhere.</t>here. </t> </section> <section anchor="LPWAN-Archi"title="LPWAN Architecture">numbered="true" toc="default"> <name>LPWAN Architecture</name> <t>LPWANnetworkarchitectures are similar among them, but each LPWAN technology names architecture elements differently. In this document, we use terminology from <xreftarget="RFC8376"/>,target="RFC8376" format="default"/>, which identifies the following entities in a typical LPWANnetwork(see <xreftarget="Fig-LPWANarchi"/>):</t> <t>o Devicestarget="Fig-LPWANarchi" format="default"/>):</t> <ul spacing="normal"> <li>Devices (Dev) are the end-devices or hosts (e.g., sensors, actuators, etc.). There can be a very high density of devices perradio gateway.</t> <t>o TheRadio Gateway.</li> <li>The Radio Gateway (RGW) is theend pointendpoint of the constrainedlink.</t> <t>o Thelink.</li> <li>The Network Gateway (NGW) is the interconnection node between the Radio Gateway and theInternet.</t> <t>oInternet.</li> <li>The Application Server (App) is theend pointendpoint of theapplication levelapplication-level protocol on the Internetside.</t>side.</li></ul> <figuretitle="LPWAN Architecture, simplifiedanchor="Fig-LPWANarchi"> <name>LPWAN Architecture (Simplified fromthat shownThat Shown inRFC8376" anchor="Fig-LPWANarchi"><artwork><![CDATA[RFC 8376)</name> <artwork name="" type="" align="left" alt=""><![CDATA[ () () () | () () () () / \ +---------+ () () () () () () / \======| ^ | +-----------+ () () () | | <--|--> | |Application| () () () () / \==========| v |=============|(App)Server | () () () / \ +---------+ +-----------+ Dev RGWs NGW]]></artwork></figure>App]]></artwork> </figure> </section> <section anchor="Term"title="Terminology">numbered="true" toc="default"> <name>Terminology</name> <t>This section definestheterminology andacronymsabbreviations used in this document. It extends the terminology of <xreftarget="RFC8376"/>.</t>target="RFC8376" format="default"/>.</t> <t>The SCHC acronym is pronounced like“sheek”"sheek" in English (or“chic”"chic" in French). Therefore, this document writes“a"a SCHCPacket”Packet" instead of“an"an SCHCPacket”.</t> <t><list style="symbols"> <t>App: LPWAN Application,Packet".</t> <dl spacing="normal" indent="9"> <dt>App:</dt><dd>LPWAN Application Server, as defined by <xreftarget="RFC8376"/>. Antarget="RFC8376" format="default"/>. It runs an application sending/receiving packets to/from theDev.</t> <t>AppIID: ApplicationDev.</dd> <dt>AppIID:</dt><dd>Application Interface Identifier. The IID that identifies theapplication server interface.</t> <t>Bi: Bidirectional. Characterizes a Field Descriptor that applies to headers of packets traveling in either direction (Up and Dw, see this glossary).</t> <t>CDA: Compression/Decompression Action. Describes the pair of actions that are performed at the compressor to compress a header field and at the decompressor to recover the original value of the header field.</t> <t>Compression Residue. TheApp interface.</dd> <dt>Compression Residue:</dt><dd>The bits that remain to be sent (beyond theRule IDRuleID itself) after applying the SCHCcompression.</t> <t>Context: Acompression.</dd> <dt>Context:</dt><dd>A set of Rules used to compress/decompressheaders.</t> <t>Dev: Device,headers, or to fragment/reassemble a packet.</dd> <dt>Dev:</dt><dd>Device, as defined by <xreftarget="RFC8376"/>.</t> <t>DevIID: Devicetarget="RFC8376" format="default"/>.</dd> <dt>DevIID:</dt><dd>Device Interface Identifier. The IID that identifies the Devinterface.</t> <t>DI: Direction Indicator. This field tells which direction of packet travel (Up, Dw or Bi) a Field Description applies to. This allows for asymmetric processing, using the same Rule.</t> <t>Dw: Downlink direction for compression/decompression, from SCHC C/D ininterface.</dd> <dt>Downlink:</dt><dd>From thenetworkApp toSCHC C/D intheDev.</t> <t>Field Description. A tuple containing identifier, value, matching operator and actions to be applied to a field.</t> <t>FID: FieldDev.</dd> <dt>IID:</dt><dd>Interface Identifier.This identifiesSee theprotocol and field a Field Description applies to.</t> <t>FL: Field Length isIPv6 addressing architecture <xref target="RFC7136" format="default"/>.</dd> <dt>L2:</dt><dd>Layer 2. The immediate lower layer that SCHC interfaces with, for example an underlying LPWAN technology. It does not necessarily correspond to thelengthOSI model definition ofthe original packet header field. ItLayer 2.</dd> <dt>L2 Word:</dt><dd>This isexpressed as a number of bits for header fieldsthe minimum subdivision offixed 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 protocol specification (such as IPv6 or UDP).</t> <t>FP: when a Field is expected to appear multiple times in a header, Field Position specifies the occurrence this Field Description applies to (for example, first uri-path option, second uri-path, etc. in a CoAP header), counting 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 target="RFC7136"/>.</t> <t>L2: Layer two. The immediate lower layer SCHC interfaces with. It is provided 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 datapayload data that the L2 will carry. In most L2 technologies, the L2 Word is an octet. 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 eachdevice.</t> <t>MO: Matching Operator. An operator used to match a value contained in a header field with a value contained in a Rule.</t> <t>Padding (P). Extradevice.</dd> <dt>Padding:</dt><dd>Extra bits that may be appended by SCHC to a data unit that it passes down tothe underlying Layer 2L2 for transmission. SCHC itself operates on bits, not bytes, and does not have any alignment prerequisite. See <xreftarget="Padding"/>.</t> <t>Profile: SCHCtarget="Padding" format="default"/>.</dd> <dt>Profile:</dt><dd>SCHC offers variations in the way it is operated, with a number of parameters listed in <xreftarget="SCHCParams"/>.target="SCHCParams" format="default"/>. A Profile indicates a particular setting of all these parameters. Both ends of a SCHC communication must be provisioned with the same Profile information and with the same set of Rules before the communication starts, so that there is no ambiguity in how they expect tocommunicate.</t> <t>Rule: A setcommunicate.</dd> <dt>Rule:</dt><dd>Part ofField Descriptions.</t> <t>Rule ID (Rule Identifier):the Context that describes how a packet is compressed/decompressed or fragmented/reassembled.</dd> <dt>RuleID:</dt><dd>Rule Identifier. An identifier for aRule. SCHC C/D on both sides share the same Rule ID forRule.</dd> <dt>SCHC:</dt><dd>Static Context Header Compression and fragmentation (SCHC), agiven packet. A set of Rule IDs are used to supportgeneric framework.</dd> <dt>SCHC C/D:</dt><dd>SCHC Compressor/Decompressor, or SCHCF/R functionality.</t> <t>SCHC C/D:Compression/Decompression. The SCHCCompressor/Decompressor. Aentity or mechanism used on both sides, at the Dev and at the network, to achieveCompression/Decompressioncompression/decompression ofheaders.</t> <t>SCHC F/R:headers.</dd> <dt>SCHC F/R:</dt><dd>SCHC Fragmenter/Reassembler or SCHCFragmentation / Reassembly. AFragmentation/Reassembly. The SCHC entity or mechanism used on both sides, at the Dev and at the network, to achieveFragmentation / Reassemblyfragmentation/reassembly of SCHCPackets.</t> <t>SCHC Packet: APackets.</dd> <dt>SCHC Packet:</dt><dd>A packet (e.g., an IPv6 packet) whose header has been compressed as per the header compression mechanism defined in this document. If the header compression process is unable to actually compress the packet header, the packet with the uncompressed header is still called a SCHC Packet (in this case, aRule IDRuleID is used to indicate that the packet header has not been compressed). See <xreftarget="SCHComp"/>target="SCHComp" format="default"/> for moredetails.</t> <t>TV: Target value. A value contained in a Rule that will be matched with the value of a header field.</t> <t>Up: Uplink direction for compression/decompression, fromdetails.</dd> <dt>Uplink:</dt><dd>From the DevSCHC C/Dto thenetwork SCHC C/D.</t> </list></t>App.</dd> </dl> <t>Additional terminology for the optional SCHCFragmentation / Reassembly mechanism (SCHC F/R)F/R is found in <xref target="FragTools" format="default"/>.</t> <t>Additional terminology for SCHC C/D is found in <xreftarget="FragTools"/>.</t>target="schc-cd-rules" format="default"/>.</t> </section> <section anchor="Overview"title="SCHC overview">numbered="true" toc="default"> <name>SCHC Overview</name> <t>SCHC can be characterized as an adaptation layer between an upper layer(typically,(for example, IPv6) and an underlying layer(typically,(for example, an LPWAN technology). SCHC comprises two sublayers(i.e.(i.e., the Compression sublayer and the Fragmentation sublayer), as shown in <xreftarget="Fig-IntroLayers"/>.</t>target="Fig-IntroLayers" format="default"/>.</t> <figuretitle="Protocol stack comprisinganchor="Fig-IntroLayers"> <name>Example of Protocol Stack Comprising IPv6,SCHCSCHC, and an LPWANtechnology" anchor="Fig-IntroLayers"><artwork><![CDATA[Technology</name> <artwork name="" type="" align="left" alt=""><![CDATA[ +----------------+ | IPv6 | +- +----------------+ | | Compression | SCHC < +----------------+ | | Fragmentation | +- +----------------+ |LPWAN technology|+----------------+ ]]></artwork></figure>+----------------+]]></artwork> </figure> <t>Before an upper layer packet (e.g., an IPv6 packet) is transmitted to the underlying layer, header compression is first attempted. The resulting packet is called aSCHC Packet,"SCHC Packet", whether or not any compression is performed. If needed by the underlying layer, the optional SCHCFragmentation MAYfragmentation <bcp14>MAY</bcp14> be applied to the SCHC Packet. The inverse operations take place at the receiver. This process is illustrated in <xreftarget="Fig-Operations"/>.</t>target="Fig-Operations" format="default"/>.</t> <figuretitle="SCHC operationsanchor="Fig-Operations"> <name>SCHC Operations at the Sender and theReceiver" anchor="Fig-Operations"><artwork><![CDATA[Receiver</name> <artwork name="" type="" align="left" alt=""><![CDATA[ A packet (e.g., an IPv6 packet) | ^ v | +------------------+ +--------------------+ | SCHC Compression | | SCHC Decompression | +------------------+ +--------------------+ | ^ | If no fragmentation (*) | +-------------- SCHC Packet -------------->| | | v | +--------------------+ +-----------------+ | SCHC Fragmentation | | SCHC Reassembly | +--------------------+ +-----------------+ | ^ | ^ | | | | | +---------- SCHC ACK (+) -------------+ | | | +-------------- SCHC Fragments -------------------+ Sender Receiver *: the decisiontonot to use SCHCFragmentationfragmentation is left to eachProfile.Profile +: optional, depends on Fragmentationmode. ]]></artwork></figure>mode]]></artwork> </figure> <section anchor="schc-packet-format"title="SCHCnumbered="true" toc="default"> <name>SCHC Packetformat">Format</name> <t>The SCHC Packet is composed of the Compressed Header followed by the payload from the original packet (see <xreftarget="Fig-SCHCpckt"/>).target="Fig-SCHCpckt" format="default"/>). The Compressed Header itself is composed of theRule IDRuleID and a Compression Residue, which is the output of compressing the packet header withthatthe Rule identified by that RuleID (see <xreftarget="SCHComp"/>).target="SCHComp" format="default"/>). The Compression Residue may be empty. Both theRule IDRuleID and the Compression Residue potentially have a variable size, and are not necessarily a multiple of bytes in size.</t> <figuretitle="SCHC Packet" anchor="Fig-SCHCpckt"><artwork><![CDATA[anchor="Fig-SCHCpckt"> <name>SCHC Packet</name> <artwork name="" type="" align="left" alt=""><![CDATA[ |------- Compressed Header -------| +---------------------------------+--------------------+ |Rule IDRuleID | Compression Residue | Payload |+---------------------------------+--------------------+ ]]></artwork></figure>+---------------------------------+--------------------+]]></artwork> </figure> </section> <section anchor="FunctionalMapping"title="Functional mapping">numbered="true" toc="default"> <name>Functional Mapping</name> <t><xreftarget="Fig-archi"/>target="Fig-archi" format="default"/> maps the functional elements of <xreftarget="Fig-Operations"/>target="Fig-Operations" format="default"/> onto the LPWAN architecture elements of <xreftarget="Fig-LPWANarchi"/>.</t>target="Fig-LPWANarchi" format="default"/>.</t> <figuretitle="Architecture" anchor="Fig-archi"><artwork><![CDATA[anchor="Fig-archi"> <name>Architectural Mapping</name> <artwork name="" type="" align="left" alt=""><![CDATA[ Dev App +----------------+ +----+ +----+ +----+ | App1 App2 App3 | |App1| |App2| |App3| | | | | | | | | | UDP | |UDP | |UDP | |UDP | | IPv6 | |IPv6| |IPv6| |IPv6| | | | | | | | | |SCHC C/D and F/R| | | | | | | +--------+-------+ +----+ +----+ +----+ | +---+ +---+ +----+ +----+ . . . +~ |RGW| === |NGW| == |SCHC| ==|SCHC|......|SCHC|..... Internet .... +---+ +---+ |F/R | |C/D | +----++----+ ]]></artwork></figure>+----+]]></artwork> </figure> <t>SCHC C/D and SCHC F/R are located on both sides of the LPWAN transmission, hereafter called“the Dev side”the "Dev side" and“the Network infrastructure side”.</t>the "Network Infrastructure side".</t> <t>The operation in the Uplink direction is as follows. The Device application uses IPv6 or IPv6/UDP protocols. Before sending the packets, the Dev compresses their headers using SCHCC/D and,C/D; if the SCHC Packet resulting from the compression needs to be fragmented by SCHC, SCHC F/R is performed (see <xreftarget="Frag"/>).target="Frag" format="default"/>). The resulting SCHC Fragments are sent to an LPWAN Radio Gateway(RGW)(RGW), which forwards them to a Network Gateway (NGW). The NGW sends the data to a SCHC F/R forre-assemblyreassembly (if needed) and then to the SCHC C/D for decompression. After decompression, the packet can be sent over the Internet to one or severalLPWAN Application Servers (App).</t>Apps.</t> <t>The SCHC F/R and SCHC C/D on the NetworkinfrastructureInfrastructure side can be part of theNGW,NGW or located in the Internet as long as a tunnel is established between them and the NGW. 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 such technologies.</t> <t>The SCHC C/Ds on both sidesMUST<bcp14>MUST</bcp14> share the same set of Rules. SoMUST<bcp14>MUST</bcp14> the SCHC F/Rs on both sides.</t> <t>The operation in the Downlink direction is similar to that in the Uplink direction, only reversing the order in which the architecture elements are traversed.</t> </section> </section> <section anchor="RuleID"title="Rule ID"> <t>Rule IDsnumbered="true" toc="default"> <name>RuleID</name> <t>RuleIDs identify the Rules used forCompression/Decompressioncompression/decompression or forFragmentation/Reassembly.</t>fragmentation/reassembly.</t> <t>The scope of theRule IDRuleID of aCompression/Decompressioncompression/decompression Rule is the link between the SCHC C/D in a given Dev and the corresponding SCHC C/D in the NetworkinfrastructureInfrastructure side. The scope of theRule IDRuleID of aFragmentation/Reassemblyfragmentation/reassembly Rule is the link between the SCHC F/R in a given Dev and the corresponding SCHC F/R in the NetworkinfrastructureInfrastructure side. 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. Hence, multiple Dev instances, which refer to different Contexts, <bcp14>MAY</bcp14> reuse the same RuleID for different Rules. On the Network Infrastructure side, in order to identify the correct Rule to be applied to Uplink traffic, the SCHC C/D or SCHC F/R needs to associate the RuleID with the Dev identifier. Similarly, for Downlink traffic, the SCHC C/D or SCHC F/R on the Network Infrastructure side first needs to identify the destination Dev before looking for the appropriate Rule (and associated RuleID) in the Context of that Dev.</t> <t>Inside their scopes, Rules forCompression/Decompressioncompression/decompression and Rules forFragmentation/Reassemblyfragmentation/reassembly share the sameRule IDRuleID space.</t> <t>The size of theRule IDsRuleIDs is not specified in this document, as it is implementation-specific and can vary according to the LPWAN technology and the number of Rules, amongothers.other things. It is defined in Profiles.</t> <t>TheRule IDsRuleIDs are used:</t><t><list style="symbols"><ul spacing="normal"> <li> <t>For SCHC C/D, to identify the Rule(i.e., the set of Field Descriptions)that is used to compress a packet header.<list style="symbols"> <t>At</t> <ul spacing="normal"> <li>At least oneRule ID MUSTRuleID <bcp14>MUST</bcp14> be allocated to tagging packets for which SCHC compression was not possible (i.e., no matching compression Rule wasfound).</t> </list></t>found).</li> </ul> </li> <li> <t>In SCHC F/R, to identify the specific mode and settings ofF/Rfragmentation/reassembly for one direction of data traffic(Up(Uplink orDw). <list style="symbols"> <t>WhenDownlink). </t> <ul spacing="normal"> <li>When SCHC F/R is used for both communication directions, at least twoRule IDRuleID values are needed forF/R,fragmentation/reassembly: one per direction of data traffic. This is becauseF/Rfragmentation/reassembly may entail control messages flowing in the reverse direction compared to datatraffic.</t> </list></t> </list></t>traffic.</li> </ul> </li> </ul> </section> <section anchor="SCHComp"title="Compression/Decompression">numbered="true" toc="default"> <name>Compression/Decompression</name> <t>Compression with SCHC is based on using a set of Rules,calledwhich constitutes theContext,Context of SCHC C/D, to compress or decompress headers. SCHC avoids Context synchronization traffic, which consumes considerable bandwidth in other header compression mechanisms such asRoHCRObust Header Compression (RoHC) <xreftarget="RFC5795"/>.target="RFC5795" format="default"/>. Since the content of packets is highly predictable inLPWAN networks,LPWANs, static Contexts can be stored beforehand. The ContextsMUST<bcp14>MUST</bcp14> be stored at both ends, and they can be learned by a provisioningprotocol orprotocol, byout of bandout-of-band means, orthey can be pre-provisioned.by pre-provisioning. The way the Contexts are provisioned is out of the scope of this document.</t> <section anchor="schc-cd-rules"title="SCHCnumbered="true" toc="default"> <name>SCHC C/DRules">Rules</name> <t>The main idea of the SCHC compression scheme is to transmit theRule IDRuleID to the other end instead of sending known field values. ThisRule IDRuleID 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 correspondingRule IDRuleID over theLPWAN network.LPWAN. The manner by which Rules are generated is out of the scope of this document. The RulesMAY<bcp14>MAY</bcp14> be changed atrun-timerun-time, but the mechanism is out of scope of this document.</t> <t>The SCHC C/D Context is a set of Rules. See <xreftarget="Fig-ctxt"/>target="Fig-ctxt" format="default"/> for ahigh level,high-level, abstract representation of the Context. 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 FieldDescriptionsDescriptors composed of a Field Identifier (FID), a Field Length (FL), a Field Position (FP), a Direction Indicator (DI), a Target Value (TV), a Matching Operator(MO)(MO), and a Compression/Decompression Action (CDA).</t> <figuretitle="A Compression/Decompression Context" anchor="Fig-ctxt"><artwork><![CDATA[anchor="Fig-ctxt"> <name>A SCHC C/D Context</name> <artwork name="" type="" align="left" alt=""><![CDATA[ /-----------------------------------------------------------------\ | Rule N | /-----------------------------------------------------------------\| | Rule i || /-----------------------------------------------------------------\|| | (FID) Rule 1 ||| |+-------+--+--+--+------------+-----------------+---------------+||| ||Field 1|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act|||| |+-------+--+--+--+------------+-----------------+---------------+||| ||Field 2|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act|||| |+-------+--+--+--+------------+-----------------+---------------+||| ||... |..|..|..| ... | ... | ... |||| |+-------+--+--+--+------------+-----------------+---------------+||/ ||Field N|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act||| |+-------+--+--+--+------------+-----------------+---------------+|/ | |\-----------------------------------------------------------------/ ]]></artwork></figure>\-----------------------------------------------------------------/]]></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 DestinationPortPort, or a CoAP URI path option). It is assumed that there is a protocol parser alongside SCHC that is able to identify all the fields encountered in the headers to be compressed, 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> <t>In a Rule, the FieldDescriptionsDescriptors are listed in the order in which the fields appear in the packet header. The FieldDescriptionsDescriptors describe the header fields with the following entries:</t><t><list style="symbols"> <t>Field ID<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 processes. In the presence of protocol nesting, the Field ID also identifies thenesting.</t> <t>Fieldnesting.</li> <li>Field Length (FL) represents the length of the original field. It can be either a fixed value (in bits) if the length is known when the Rule is created or a type if the length is variable. The length of a header field is defined by its own protocol specification (e.g., IPv6 or UDP). If the length is variable, the type defines the process to compute the length and its unit (bits,bytes…).</t> <t>Fieldbytes...).</li> <li>Field Position (FP): most often, a field only occurs once in a packet header. However, some fields may occur multiple times. An example is the uri-path of CoAP. FP indicates which occurrence this FieldDescriptionDescriptor applies to.If FP is not specified in the Field Description, it takes theThe default valueofis 1. The value 1 designates the first occurrence. The value 0 is special. It means“don’t care”,"don't care", see <xreftarget="PProcessing"/>.</t>target="PProcessing" format="default"/>.</li> <li> <t>A Direction Indicator (DI) indicates the packet direction(s) this FieldDescriptionDescriptor applies to.Three values areIt allows for asymmetric processing, using the same Rule. Three values are possible:<list style="symbols"> <t>UPLINK (Up): this</t> <dl spacing="normal" newline="false"> <dt>Up:</dt><dd>this FieldDescriptionDescriptor is only applicable to packetssent by the Dev to the App,</t> <t>DOWNLINK (Dw): thistraveling Uplink.</dd> <dt>Dw:</dt><dd>this FieldDescriptionDescriptor is only applicable to packetssent from the App to the Dev,</t> <t>BIDIRECTIONAL (Bi): thistraveling Downlink.</dd> <dt>Bi:</dt><dd>this FieldDescriptionDescriptor is applicable to packets travelingboth Up and Dw.</t> </list></t> <t>TargetUplink or Downlink.</dd> </dl> </li> <li>Target Value (TV) is the value used to match against the packet header field. The Target Value can be a scalar value of any type (integer, strings, etc.) or a more complex structure (array, list, etc.). The types and representations are out of scope for thisdocument.</t> <t>Matchingdocument.</li> <li>Matching Operator (MO) is the operator used to match theField Valuefield value and the Target Value. The Matching Operator may require some parameters.MO is only used during the compression phase.The set of MOs defined in this document can be found in <xreftarget="chap-MO"/>.</t> <t>Compression Decompressiontarget="chap-MO" format="default"/>.</li> <li>Compression/Decompression Action (CDA) describes thecompressionpair of actions that are performed at the compressor to compress a header field anddecompression processesat the decompressor tobe performed afterrecover theMO is applied.original value of the header field. Some CDAs might use parameter values for their operation.CDAs are used in both the compression and the decompression functions.The set of CDAs defined in this document can be found in <xreftarget="chap-CDA"/>.</t> </list></t> </section> <section anchor="IDComp" title="Rule ID for SCHC C/D"> <t>Rule IDs are sent by the compression function in one side and are received for 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, MAY 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 identifier. Similarly, the SCHC Compressor on the Network infrastructure side first identifies the destination Dev before looking for the appropriate compression Rule (and associated Rule ID) in the Context of that Dev.</t>target="chap-CDA" format="default"/>.</li> </ul> </section> <section anchor="PProcessing"title="Packet processing">numbered="true" toc="default"> <name>Packet Processing</name> <t>The compression/decompression process follows several phases:</t><t><list style="symbols"> <t>Compression<dl spacing="normal"> <dt>Compression Ruleselection: theselection:</dt><dd><t>the general idea is to browse the Rule set to find 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. The detailed algorithm is the following:<list style="symbols"> <t>The</t> <ul spacing="normal"> <li>The first step is to check theField Identifiers (FID).FIDs. If any header field of the packet being examined cannot be matched with a FieldDescriptionDescriptor with the correct FID, the RuleMUST<bcp14>MUST</bcp14> be disregarded. If any FieldDescriptionDescriptor in the Rule has a FID that cannot be matched to one of the header fields of the packet being examined, the RuleMUST<bcp14>MUST</bcp14> bedisregarded.</t> <t>Thedisregarded.</li> <li>The next step is to match the FieldDescriptionsDescriptors by their direction, using theDirection Indicator (DI).DI. If any field of the packet header cannot be matched with a FieldDescriptionDescriptor with the correct FID and DI, the RuleMUST<bcp14>MUST</bcp14> bedisregarded.</t> <t>Thendisregarded.</li> <li> <t>Then, the FieldDescriptionsDescriptors are further selected according toField Position (FP).FP. If any field of the packet header cannot be matched with a FieldDescriptionDescriptor with the correct FID, DI and FP, the RuleMUST<bcp14>MUST</bcp14> be disregarded.<vspace blankLines='1'/></t> <t> The value 0 for FP means“don’t care”, i.e."don't care", i.e., the comparison of this FieldDescription’sDescriptor'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 Rules forprotocolsprotocol headers in which 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. Indeed, it may result in decompressed packets having fields ordered differently compared to the original packet.</t> </li> <li> <t>Once each header field has been associated with a FieldDescriptionDescriptor with matching FID,DIDI, and FP, each packetfield’sfield's value is then compared to the correspondingTarget Value (TV)TV stored in the Rule for that specific field, using thematching operator (MO).MO. If every field in the packet header satisfies the correspondingmatching operators (MO)MOs of a Rule(i.e.(i.e., all MO results are True), that Rule is valid for use to compress the header. Otherwise, the RuleMUST<bcp14>MUST</bcp14> be disregarded.<vspace blankLines='1'/></t> <t> This specification does not prevent multiple Rules from matching the above stepsand thereforeand, therefore, being valid for use. 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 does not constitute an interoperability issue.</t><t>If</li> <li>If no valid compression Rule is found, then the packetMUST<bcp14>MUST</bcp14> be sent uncompressed using theRule IDRuleID dedicated to this purpose (see <xreftarget="RuleID"/>).target="RuleID" format="default"/>). The entire packet header is the Compression Residue (see <xreftarget="Fig-SCHCpckt"/>).target="Fig-SCHCpckt" format="default"/>). Sending an uncompressed header is likely to require SCHCF/R.</t> </list></t> <t>Compression: ifF/R.</li> </ul></dd> <dt>Compression:</dt><dd>if a valid Rulewasis found, each field of the header is compressed according to theCompression/Decompression Actions (CDAs)CDAs of the Rule. The fields are compressed in the order that the FieldDescriptionsDescriptors 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-empty residues for each field of the header, in the order the FieldDescriptionsDescriptors appear in the Rule. The order in which the FieldDescriptionsDescriptors appear in the Rule is therefore semanticallyimportant.</t> </list></t>important.</dd> </dl> <figuretitle="Compressionanchor="Fig-CompRes"> <name>Compression Residuestructure" anchor="Fig-CompRes"><artwork><![CDATA[Structure</name> <artwork name="" type="" align="left" alt=""><![CDATA[ |------------------- Compression Residue -------------------| +-----------------+-----------------+-----+-----------------+ | field 1 residue | field 2 residue | ... | field N residue |+-----------------+-----------------+-----+-----------------+ ]]></artwork></figure> <t><list style="symbols"> <t>Sending: The Rule ID+-----------------+-----------------+-----+-----------------+]]></artwork> </figure> <dl spacing="normal"> <dt>Sending:</dt><dd>The RuleID is sent to the other endfollowed byjointly with the Compression Residue (which could be empty) or the uncompressed header, and directly followed by the payload (see <xreftarget="Fig-SCHCpckt"/>).target="Fig-SCHCpckt" format="default"/>). The way theRule IDRuleID is sent will be specified in the Profile and is out of the scope of the present document. For example, it could be included in an L2 header or sent as part of the L2payload.</t> <t>Decompression: whenpayload.</dd> <dt>Decompression:</dt><dd><t>when decompressing, on the Networkinfrastructure sideInfrastructure side, the SCHC C/D needs to find the correct Rule based on the L2 address of theDev; in this way, it can use the DevIID and the Rule ID.Dev. On the Dev side, only theRule IDRuleID is needed to identify the correct Rule since the Dev typically only holds Rules that apply to itself.<vspace blankLines='1'/></t> <t> This Rule describes the compressed header format. From this, the decompressor determines the order of the residues, thefixed-sizedfixed-size orvariable-sizedvariable-size nature of each residue (see <xreftarget="var-length-field"/>),target="var-length-field" format="default"/>), and the size of thefixed-sizedfixed-size residues.<vspace blankLines='1'/> From</t> <t> Therefore, from the received compressed header, it canthereforeretrieve all the residue values and associate them to the corresponding header fields.<vspace blankLines='1'/></t> <t> For each field in the header, the receiver applies the CDA action associatedtowith that field in order to reconstruct the original header field value. The CDA application order can be different from the order in which the fields are listed in the Rule. In particular, Compute-*MUST<bcp14>MUST</bcp14> be applied after the application of the CDAs of all the fields it computes on.</t></list></t></dd> </dl> </section> <section anchor="chap-MO"title="Matching operators"> <t>Matching Operators (MOs)numbered="true" toc="default"> <name>Matching Operators</name> <t>MOs are functions usedby bothat the compression side of SCHCC/D endpoints.C/D. 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. The following MOs aredefined as follows:</t> <t><list style="symbols"> <t>equal: Thedefined:</t> <dl spacing="normal"> <dt>equal:</dt><dd>The match result is True if the field value in the packet matches theTV.</t> <t>ignore: NoTV.</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 alwaystrue.</t> <t>MSB(x): ATrue.</dd> <dt>MSB(x):</dt><dd>A match is obtained if the most significant (leftmost) x bits of the 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 example, x must be multiple of 8 if the unit of the variable length isbytes.</t> <t>match-mapping: Withbytes.</dd> <dt>match-mapping:</dt><dd>With match-mapping,the Target ValueTV is a list of values. Each value of the list is identified by an index. Compression is achieved by sending the index instead of the original header field value. This operator matches if the header field value is equal to one of the values in the targetlist.</t> </list></t>list.</dd> </dl> </section> <section anchor="chap-CDA"title="Compression Decompressionnumbered="true" toc="default"> <name>Compression/Decompression Actions(CDA)">(CDA)</name> <t>TheCompression Decompression Action (CDA) describesCDA specifies the actions taken during the compression of header fields and the inverse action taken by the decompressor to restore the originalvalue.</t> <texttable title="Compressionvalue. The CDAs defined by this document are described in detail in <xref target="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 DecompressionActions" anchor="Fig-function"> <ttcol align='left'>Action</ttcol> <ttcol align='left'>Compression</ttcol> <ttcol align='left'>Decompression</ttcol> <c> </c> <c> </c> <c> </c> <c>not-sent</c> <c>elided</c> <c>useActions</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 inRule</c> <c>value-sent</c> <c>send</c> <c>useRule</td> </tr> <tr> <td align="left">value-sent</td> <td align="left">send</td> <td align="left">use receivedvalue</c> <c>mapping-sent</c> <c>send index</c> <c>retrievevalue</td> </tr> <tr> <td align="left">mapping-sent</td> <td align="left">send index</td> <td align="left">retrieve value from TVlist</c> <c>LSB</c> <c>send LSB</c> <c>concat.list</td> </tr> <tr> <td align="left">LSB</td> <td align="left">send least significant bits (LSB)</td> <td align="left">concatenate TV and receivedvalue</c> <c>compute-*</c> <c>elided</c> <c>recomputevalue</td> </tr> <tr> <td align="left">compute-*</td> <td align="left">elided</td> <td align="left">recompute atdecompressor</c> <c>DevIID</c> <c>elided</c> <c>builddecompressor</td> </tr> <tr> <td align="left">DevIID</td> <td align="left">elided</td> <td align="left">build IID from L2 Devaddr</c> <c>AppIID</c> <c>elided</c> <c>buildaddr</td> </tr> <tr> <td align="left">AppIID</td> <td align="left">elided</td> <td align="left">build IID from L2 Appaddr</c> </texttable> <t><xref target="Fig-function"/> summarizes the basic actions that can be used to compress and decompress a field. Theaddr</td> </tr> </tbody> </table> <t>The first column shows theaction’saction's name. The second and third columns show the compression and decompression behaviors for each action.</t> <section anchor="fixed-length-field"title="processing fixed-length fields">numbered="true" toc="default"> <name>Processing Fixed-Length Fields</name> <t>If the field is identified in the FieldDescriptionDescriptor as being of fixed 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. This value may be empty (e.g., not-sent CDA), in which case the field residue is absent from the Compression Residue.</t> <figuretitle="fixed sized field residue structure" anchor="Fig-FieldResFixLength"><artwork><![CDATA[anchor="Fig-FieldResFixLength"> <name>Fixed-Size Field Residue Structure</name> <artwork name="" type="" align="left" alt=""><![CDATA[ |- field residue -| +-----------------+ | value |+-----------------+ ]]></artwork></figure>+-----------------+]]></artwork> </figure> </section> <section anchor="var-length-field"title="processing variable-length fields">numbered="true" toc="default"> <name>Processing Variable-Length Fields</name> <t>If the field is identified in the FieldDescriptionDescriptor as being of variable length, then applying the CDA to compress this field may result in a value of fixed size (e.g., not-sent or mapping-sent) 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 applying 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> <figuretitle="variable sized field residue structure" anchor="Fig-FieldResVarLength"><artwork><![CDATA[anchor="Fig-FieldResVarLength"> <name>Variable-Size Field Residue Structure</name> <artwork name="" type="" align="left" alt=""><![CDATA[ |--- field residue ---| +-------+-------------+ | size | value |+-------+-------------+ ]]></artwork></figure>+-------+-------------+]]></artwork> </figure> <t>The size (using the unit defined in the FL) is encoded on 4,1212, or 28 bits as follows:</t><t><list style="symbols"> <t>If<ul spacing="normal"> <li>If the size is between 0 and 14, it is encoded as a4 bits4-bit unsignedinteger.</t> <t>Sizesinteger.</li> <li>Sizes between 15 and 254 are encoded as 0b1111 followed by the8 bits8-bit unsignedinteger.</t> <t>Largerinteger.</li> <li>Larger sizes are encoded as 0xfff followed by the16 bits16-bit unsignedinteger.</t> </list></t>integer.</li> </ul> <t>If the field is identified in the FieldDescriptionDescriptor as being of variable length and this field is not present in the packet header being compressed, size 0MUST<bcp14>MUST</bcp14> be sent to denote its absence.</t> </section> <section anchor="NotSentCDA"title="not-sent CDA">numbered="true" toc="default"> <name>Not-Sent CDA</name> <t>The not-sent action can be used when the field value is specified in a Ruleand thereforeand, therefore, known by both the Compressor and the Decompressor. This actionSHOULD<bcp14>SHOULD</bcp14> be used with the“equal”"equal" MO. If MO is“ignore”,"ignore", there is a riskto haveof having a decompressed field value that is different from the original field that was compressed.</t> <t>The compressor does not send any residue for a field on which not-sent compression is applied.</t> <t>The decompressor restores the field value with theTarget ValueTV stored in the matched Rule identified by the receivedRule ID.</t>RuleID.</t> </section> <section anchor="value-sent-cda"title="value-sent CDA">numbered="true" toc="default"> <name>Value-Sent CDA</name> <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, using the same bit order as in the original packet header.</t> <t>If this action is performed on avariable lengthvariable-length field, the size of the residue value (using the units defined in FL)MUST<bcp14>MUST</bcp14> be sent as described in <xreftarget="var-length-field"/>.</t>target="var-length-field" format="default"/>.</t> <t>This action is generally used with the“ignore”"ignore" MO.</t> </section> <section anchor="mapping-sent-cda"title="mapping-sent CDA">numbered="true" toc="default"> <name>Mapping-Sent CDA</name> <t>The mapping-sent action is used to send an index (the index into theTarget ValueTV list of values) instead of the original value. This action is used together with the“match-mapping”"match-mapping" MO.</t> <t>On the compressor side, the match-mappingMatching OperatorMO searches the TV for a match with the header field value. The mapping-sent CDA then sends the corresponding index as the field residue. 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 restore the field value by looking up the list in the TV.</t> <t>The number of bits sent is the minimal size for coding all the possible indices.</t> <t>The first element in the listMUST<bcp14>MUST</bcp14> be represented by index value 0, and successive elements in the listMUST<bcp14>MUST</bcp14> have indices incremented by 1.</t> </section> <section anchor="lsb-cda"title="LSB CDA">numbered="true" toc="default"> <name>LSB CDA</name> <t>The LSB action is used together with the“MSB(x)”"MSB(x)" MO to avoid sending the most significant part of the packet field if that part is already known by the receiving end.</t> <t>The compressor sends theLeast Significant BitsLSBs as the field residue value. The number of bits sent is the original header field length minus the length specified in the MSB(x) MO. The bits appear in the residue in the same bit order as in the original packet header.</t> <t>The decompressor concatenates the x most significant bits ofTarget Valuethe TV and the received residue value.</t> <t>If this action is performed on avariable lengthvariable-length field, the size of the residue value (using the units defined in FL)MUST<bcp14>MUST</bcp14> be sent as described in <xreftarget="var-length-field"/>.</t>target="var-length-field" format="default"/>.</t> </section> <section anchor="deviid-appiid-cda"title="DevIID,numbered="true" toc="default"> <name>DevIID, AppIIDCDA">CDA</name> <t>These actions are used to processrespectively the Dev andtheApp Interface Identifiers (DevIIDDevIID andAppIID)AppIID of the IPv6addresses.addresses, respectively. AppIID CDA is less common since most current LPWAN technologies frames contain a single L2 address, which is theDev’sDev's address.</t> <t>TheIIDDevIID valueMAY<bcp14>MAY</bcp14> be computed from theDeviceDev ID present in the L2 header, or from some other stable identifier. The computation is specific to each Profile andMAY<bcp14>MAY</bcp14> depend on theDeviceDev ID size.</t> <t>In thedownlink direction (Dw),Downlink direction, at the compressor, the DevIID CDA may be used to generate the L2 addresses on the LPWAN, based on thepacket’spacket's Destination Address.</t> </section> <section anchor="compute-"title="Compute-*">numbered="true" toc="default"> <name>Compute-*</name> <t>Some fields can be elided at the compressor and recomputed locally at the decompressor.</t> <t>Because the field is uniquely identified by itsField IDFID (e.g.,UDPIPv6 length), the relevant protocol specification unambiguously defines the algorithm for such computation.</t><t>Examples<t>An example offieldsa field thatknowknows how to recomputethemselves are UDP length,itself is IPv6length and UDP checksum.</t>length.</t> </section> </section> </section> <section anchor="Frag"title="Fragmentation/Reassembly">numbered="true" toc="default"> <name>Fragmentation/Reassembly</name> <section anchor="overview"title="Overview">numbered="true" toc="default"> <name>Overview</name> <t>In LPWAN technologies, the L2 MTU typically ranges from tens to hundreds of bytes. Some of these technologies do not have an internal fragmentation/reassembly mechanism.</t> <t>The optional SCHCFragmentation/Reassembly (SCHC F/R)F/R functionality enables such LPWAN technologies to comply with the IPv6 MTU requirement of 1280 bytes <xreftarget="RFC8200"/>.target="RFC8200" format="default"/>. It isOPTIONAL<bcp14>OPTIONAL</bcp14> to implement per this specification, but Profiles may specify that it isREQUIRED.</t><bcp14>REQUIRED</bcp14>.</t> <t>This specification includes several SCHC F/R modes, which allow for a range of reliability options such as optional SCHC Fragment retransmission. More modes may be defined in the future.</t> <t>The same SCHC F/R modeMUST<bcp14>MUST</bcp14> be used for all SCHC Fragments of a given SCHC Packet. 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 fragmented SCHC Packets. In addition, SCHC F/R provides protocol elements that allow transmitting several fragmented SCHC Packets concurrently,i.e.i.e., interleaving the transmission of fragments from different fragmented SCHC Packets. A ProfileMAY<bcp14>MAY</bcp14> restrict the latter behavior.</t> <t>The L2 Word size (see <xreftarget="Term"/>)target="Term" format="default"/>) determines the encoding of some messages. SCHC F/R usually generates SCHC Fragments and SCHC ACKs that are multiples of L2 Words.</t> </section> <section anchor="FragTools"title="SCHCnumbered="true" toc="default"> <name>SCHC F/R ProtocolElements">Elements</name> <t>This subsection describes the different elements that are used to enable the SCHC F/R functionality defined in this document. These elements include the SCHC F/R messages, tiles, windows, bitmaps, counters,timerstimers, and header fields.</t> <t>The elements are described here in a generic manner. Their application to each SCHC F/R mode is found in <xreftarget="FragModes"/>.</t>target="FragModes" format="default"/>.</t> <section anchor="messages"title="Messages">numbered="true" toc="default"> <name>Messages</name> <t>SCHC F/R defines the following messages:</t><t><list style="symbols"> <t>SCHC Fragment: A<dl spacing="normal"> <dt>SCHC Fragment:</dt><dd>A message that carries part of a SCHC Packet from the sender to thereceiver.</t> <t>SCHC ACK: Anreceiver.</dd> <dt>SCHC ACK:</dt><dd>An acknowledgement for fragmentation, by the receiver to the sender. This message is used to indicate whether or not the reception of pieces of, or the wholeofof, the fragmented SCHCPacket,Packet wassuccessful.</t> <t>SCHCsuccessful.</dd> <dt>SCHC ACKREQ: AREQ:</dt><dd>A request by the sender for a SCHC ACK from thereceiver.</t> <t>SCHC Sender-Abort: Areceiver.</dd> <dt>SCHC Sender-Abort:</dt><dd>A message by the sender telling the receiver that it has aborted the transmission of a fragmented SCHCPacket.</t> <t>SCHC Receiver-Abort: APacket.</dd> <dt>SCHC Receiver-Abort:</dt><dd>A message by the receiver to tell the sender to abort the transmission of a fragmented SCHCPacket.</t> </list></t>Packet.</dd> </dl> <t>The format of these messages is provided in <xreftarget="Fragfor"/>.</t>target="Fragfor" format="default"/>.</t> </section> <section anchor="OtherTools"title="Tiles,numbered="true" toc="default"> <name>Tiles, Windows, Bitmaps, Timers,Counters">Counters</name> <section anchor="tiles"title="Tiles">numbered="true" toc="default"> <name>Tiles</name> <t>The SCHC Packet is fragmented into pieces, hereafter calledtiles."tiles". The tilesMUST<bcp14>MUST</bcp14> be non-empty and pairwise disjoint. Their unionMUST<bcp14>MUST</bcp14> be equal to the SCHC Packet.</t> <t>See <xreftarget="Fig-TilesExample"/>target="Fig-TilesExample" format="default"/> for an example.</t> <figuretitle="a SCHCanchor="Fig-TilesExample"> <name>SCHC PacketfragmentedFragmented intiles" anchor="Fig-TilesExample"><artwork><![CDATA[Tiles</name> <artwork name="" type="" align="left" alt=""><![CDATA[ SCHC Packet+----+--+-----+---+----+-+---+---+-----+...-----+----+---+------++----+--+-----+---+----+-+---+-----+...-----+----+---+------+ Tiles | | | | | | | | | | | | || +----+--+-----+---+----+-+---+---+-----+...-----+----+---+------+ ]]></artwork></figure>+----+--+-----+---+----+-+---+-----+...-----+----+---+------+]]></artwork> </figure> <t>Modes (see <xreftarget="FragModes"/>) MAYtarget="FragModes" format="default"/>) <bcp14>MAY</bcp14> place additional constraints on tile sizes.</t> <t>Each SCHC Fragment message carries at least one tile in its Payload, if the Payload field is present.</t> </section> <section anchor="Windows"title="Windows">numbered="true" toc="default"> <name>Windows</name> <t>Some SCHC F/R modes may handle successive tiles in groups, called windows.</t> <t>If windows areused</t> <t><list style="symbols"> <t>allused:</t> <ul spacing="normal"> <li>all the windows of a SCHC Packet, except the last one,MUST<bcp14>MUST</bcp14> contain the same number of tiles. This number isWINDOW_SIZE.</t> <t>WINDOW_SIZE MUSTWINDOW_SIZE.</li> <li>WINDOW_SIZE <bcp14>MUST</bcp14> be specified in aProfile.</t> <t>theProfile.</li> <li>the windows arenumbered.</t> <t>theirnumbered.</li> <li>their numbersMUST<bcp14>MUST</bcp14> increment by 1 from 0 upward, from the start of the SCHC Packet to itsend.</t> <t>theend.</li> <li>the last windowMUST<bcp14>MUST</bcp14> contain WINDOW_SIZE tiles orless.</t> <t>tilesless.</li> <li>tiles are numbered within eachwindow.</t> <t>thewindow.</li> <li>the tile indicesMUST<bcp14>MUST</bcp14> decrement by 1 from WINDOW_SIZE - 1 downward, looking from the start of the SCHC Packet toward itsend.</t> <t>eachend.</li> <li>therefore, each tile of a SCHC Packet isthereforeuniquely identified by a window number and a tile index within thiswindow.</t> </list></t>window.</li> </ul> <t>See <xreftarget="Fig-WindowsExample"/>target="Fig-WindowsExample" format="default"/> for an example.</t> <figuretitle="a SCHCanchor="Fig-WindowsExample"> <name>SCHC PacketfragmentedFragmented intiles groupedTiles Grouped in 29windows,Windows, with WINDOW_SIZE =5" anchor="Fig-WindowsExample"><artwork><![CDATA[ +---------------------------------------------...-------------+5</name> <artwork name="" type="" align="left" alt=""><![CDATA[ +---------------------------------------------...-----------+ | SCHC Packet |+---------------------------------------------...-------------+ Tile #+---------------------------------------------...-----------+ Tile# | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 | 4 | | 0 | 4| 3 | Window #|3| Window# |-------- 0 --------|-------- 1 --------|- 2 ... 27-|-- 28 -| ]]></artwork></figure>-|- 28-|]]></artwork> </figure> <t><xreftarget="MultWinSizes"/>target="MultWinSizes" format="default"/> discusses the benefits of selecting one among multiple window sizes depending on the size of the SCHC Packet to be fragmented.</t> <t>When windows areused</t> <t><list style="symbols"> <t>Bitmapsused:</t> <ul spacing="normal"> <li>Bitmaps (see <xreftarget="Bitmap"/>) MAYtarget="Bitmap" format="default"/>) <bcp14>MAY</bcp14> be sent back by the receiver to the sender in a SCHC ACKmessage.</t> <t>Amessage.</li> <li>A Bitmap corresponds to exactly oneWindow.</t> </list></t>Window.</li> </ul> </section> <section anchor="Bitmap"title="Bitmaps">numbered="true" toc="default"> <name>Bitmaps</name> <t>Each bit in the Bitmap for a window corresponds to a tile in the window.EachTherefore, each Bitmap hasthereforeWINDOW_SIZE bits. The bit at theleft-mostleftmost position corresponds to the tile numbered WINDOW_SIZE - 1. Consecutive bits, going right, correspond to sequentially decreasing tile indices. In Bitmaps for windows that are not the last one of a SCHC Packet, the bit at theright-mostrightmost position corresponds to the tile numbered 0. In the Bitmap for the last window, the bit at theright-mostrightmost position corresponds either to the tile numbered 0 or to a tile that is sent/received as“the"the last one of the SCHCPacket”Packet" without explicitly stating its number (see <xreftarget="LastFrag"/>).</t>target="LastFrag" format="default"/>).</t> <t>At thereceiver</t> <t><list style="symbols"> <t>areceiver:</t> <ul spacing="normal"> <li>a bit set to 1 in the Bitmap indicates that a tile associated with that bit position has been correctly received for thatwindow.</t> <t>awindow.</li> <li>a bit set to 0 in the Bitmap indicates that there has been no tile correctly received, associated with that bit position, for that window. Possible reasons include that the tile was not sent at all, not received, or received witherrors.</t> </list></t>errors.</li> </ul> </section> <section anchor="MiscTools"title="Timersnumbered="true" toc="default"> <name>Timers andcounters">Counters</name> <t>Some SCHC F/R modes can use the following timers andcounters</t> <t><list style="symbols"> <t>Inactivity Timer: acounters:</t> <dl spacing="normal"> <dt>Inactivity Timer:</dt><dd>a SCHC Fragment receiver uses this timer to abort waiting for a SCHC F/Rmessage.</t> <t>Retransmission Timer: amessage.</dd> <dt>Retransmission Timer:</dt><dd>a SCHC Fragment sender uses this timer to abort waiting for an expected SCHCACK.</t> <t>Attempts: thisACK.</dd> <dt>Attempts:</dt><dd>this counter counts the requests for SCHC ACKs, up toMAX_ACK_REQUESTS.</t> </list></t>MAX_ACK_REQUESTS.</dd> </dl> </section> </section> <section anchor="IntegrityChecking"title="Integrity Checking">numbered="true" toc="default"> <name>Integrity Checking</name> <t>The integrity of the fragmentation-reassembly process of a SCHC PacketMUST<bcp14>MUST</bcp14> be checked at the receive end. A ProfileMUST<bcp14>MUST</bcp14> specify how integrity checking is performed.</t> <t>It isRECOMMENDED<bcp14>RECOMMENDED</bcp14> that integrity checking be performed by computing a Reassembly Check Sequence (RCS) 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> <t>The RCS supports UDP checksum elision by SCHC C/D (see <xreftarget="UDPchecksum"/>).</t>target="UDPchecksum" format="default"/>).</t> <t>The CRC32 polynomial 0xEDB88320 (i.e., the reversed polynomial representation, which is used in the Ethernet standard <xreftarget="ETHERNET"/>)target="ETHERNET" format="default"/>) isRECOMMENDED<bcp14>RECOMMENDED</bcp14> as the default algorithm for computing the RCS.</t> <t>The RCSMUST<bcp14>MUST</bcp14> be computed on the full SCHC Packet concatenated with the padding bits, if any, of the SCHC Fragment carrying the last tile. The rationale is that the SCHC reassembler has no way of knowing the boundary between the last tile and the padding bits. Indeed, this requires decompressing the SCHC Packet, which is out of the scope of the SCHC reassembler.</t> <t>The concatenation of the complete SCHC Packet and any padding bits, if present, of the last SCHC Fragment does not generally constitute an integer number of bytes. CRC libraries are usuallybyte-oriented.byte oriented. It isRECOMMENDED<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 that the RCS be computed on that byte array.</t> </section> <section anchor="HeaderFields"title="Header Fields">numbered="true" toc="default"> <name>Header Fields</name> <t>The SCHC F/R messages contain the following fields (see the formats in <xreftarget="Fragfor"/>):</t> <t><list style="symbols"> <t>Rule ID: thistarget="Fragfor" format="default"/>):</t> <dl spacing="normal"> <dt>RuleID:</dt><dd><t>this field is present in all the SCHC F/R messages. The Ruleidentifies <list style="symbols"> <t>thatidentifies:</t> <ul spacing="normal"> <li>that a SCHC F/R message is being carried, as opposed to an unfragmented SCHCPacket,</t> <t>whichPacket,</li> <li>which SCHC F/R mode isused</t> <t>inused,</li> <li>in case this mode uses windows, what the value of WINDOW_SIZEis,</t> <t>whatis, and</li> <li>what other optional fields are present and what the field sizesare.</t> </list>are.</li> </ul> <t> 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 different SCHC F/R modes or different parameters.InterleavedTherefore, interleaved transmission of these isthereforepossible.<vspace blankLines='1'/></t> <t> All SCHC F/R messages pertaining to the same SCHC PacketMUST<bcp14>MUST</bcp14> bear the sameRule ID.</t> <t>DatagramRuleID.</t> </dd> <dt>Datagram Tag(DTag). This(DTag):</dt><dd><t>This field allows differentiating SCHC F/R messages belonging to different SCHC Packets that may be using the sameRule IDRuleID simultaneously. Hence, it allows interleaving fragments of a new SCHC Packet with fragments of a previous SCHC Packet under the sameRule ID. <vspace blankLines='1'/>RuleID. </t> <t> The size of the DTag field (calledT,"T", in bits) is defined by each Profile for eachRule ID.RuleID. When T is 0, the DTag field does not appear in the SCHC F/R messages and the DTag value is defined as 0.<vspace blankLines='1'/></t> <t> When T is 0, there can be no more than one fragmented SCHC Packet in transit for each fragmentationRule ID. <vspace blankLines='1'/>RuleID. </t> <t> If T is not 0,DTag <list style="symbols"> <t>MUSTDTag: </t> <ul spacing="normal"> <li><bcp14>MUST</bcp14> be set to the same value for all the SCHC F/R messages related to the same fragmented SCHCPacket,</t> <t>MUSTPacket, and</li> <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 sameRule ID,RuleID and whose transmission mayoverlap.</t> </list></t> <t>W: Theoverlap.</li> </ul> </dd> <dt>W:</dt><dd><t>The W field is optional. It is only present if windows are used. Its presence and size (calledM,"M", in bits) is defined by each SCHC F/R mode and each Profile for eachRule ID. <vspace blankLines='1'/>RuleID. </t> <t> This field carries information pertaining to the window a SCHC F/R message relates to. If present, WMUST<bcp14>MUST</bcp14> carry the same value for all the SCHC F/R messages related to the same window. Depending on the mode and Profile, W may carry the full window number, or just theleast significant bitLSB or any other partial representation of the window number.</t><t>Fragment</dd> <dt>Fragment Compressed Number(FCN). The(FCN):</dt><dd><t>The FCN field is present in the SCHC Fragment Header. Its size (calledN,"N", in bits) is defined by each Profile for eachRule ID. <vspace blankLines='1'/>RuleID. </t> <t> 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-sized tile index. 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 SCHC F/R process:<list style="symbols"> <t>The</t> <ul spacing="normal"> <li>The FCN value with all the bits equal to 1 (calledAll-1)"All-1") signals that the very last tile of a SCHC Packet has been transmitted. By extension, if windows are used, the last window of a packet is called theAll-1 window.</t> <t>If"All-1" window.</li> <li>If windows are used, the FCN value with all the bits equal to 0 (calledAll-0)"All-0") signals the last tile of a window that is not the last one of the SCHC packet. By extension, such a window is called anAll-0 window.</t> </list></t> <t>Reassembly"All-0 window".</li> </ul> </dd> <dt>Reassembly Check Sequence(RCS). This(RCS):</dt><dd><t>This field only appears in the All-1 SCHC Fragments. Its size (calledU,"U", in bits) is defined by each Profile for eachRule ID. <vspace blankLines='1'/>RuleID. </t> <t> See <xreftarget="IntegrityChecking"/>target="IntegrityChecking" format="default"/> for the RCS default size, default polynomial and details on RCS computation.</t><t>C</dd> <dt>C (integrityCheck): CCheck):</dt><dd><t>C is a 1-bit field. This field is used in the SCHC ACK message to report on the reassembled SCHC Packet integrity check (see <xreftarget="IntegrityChecking"/>). <vspace blankLines='1'/>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 notperformed,performed or thatisit was a failure.</t><t>Compressed Bitmap. The</dd> <dt>Compressed Bitmap:</dt><dd><t>The Compressed Bitmap is used together with windows and Bitmaps (see <xreftarget="Bitmap"/>).target="Bitmap" format="default"/>). Its presence and size is defined for each SCHC F/R mode for eachRule ID. <vspace blankLines='1'/>RuleID. </t> <t> This field appears in the SCHC ACK message to report on the receiver Bitmap (see <xreftarget="BitmapTrunc"/>).</t> </list></t>target="BitmapTrunc" format="default"/>).</t> </dd> </dl> </section> </section> <section anchor="Fragfor"title="SCHCnumbered="true" toc="default"> <name>SCHC F/R MessageFormats">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"title="SCHCnumbered="true" toc="default"> <name>SCHC Fragmentformat">Format</name> <t>A SCHC Fragment conforms to the general format shown in <xreftarget="Fig-FragFormat"/>.target="Fig-FragFormat" format="default"/>. It comprises a SCHC Fragment Header and a SCHC Fragment Payload. The SCHC Fragment Payload carries one or several tile(s).</t> <figuretitle="SCHCanchor="Fig-FragFormat"> <name>SCHC Fragmentgeneral format" anchor="Fig-FragFormat"><artwork><![CDATA[General Format</name> <artwork name="" type="" align="left" alt=""><![CDATA[ +-----------------+-----------------------+~~~~~~~~~~~~~~~~~~~~~ | Fragment Header |Fragment Payload | padding (as needed)+-----------------+-----------------------+~~~~~~~~~~~~~~~~~~~~~ ]]></artwork></figure>+-----------------+-----------------------+~~~~~~~~~~~~~~~~~~~~~]]></artwork> </figure> <section anchor="NotLastFrag"title="Regularnumbered="true" toc="default"> <name>Regular SCHCFragment">Fragment</name> <t>The Regular SCHC Fragment format is shown in <xreftarget="Fig-NotLastFrag"/>.target="Fig-NotLastFrag" format="default"/>. Regular SCHC Fragments are generally used to carry tiles that are not the last one of a SCHC Packet. The DTag field and the W field areOPTIONAL,<bcp14>OPTIONAL</bcp14>, their presence is specified by each mode and Profile.</t> <figuretitle="Detailedanchor="Fig-NotLastFrag"> <name>Detailed Header Format for Regular SCHCFragments" anchor="Fig-NotLastFrag"><artwork><![CDATA[ |---Fragments</name> <artwork name="" type="" align="left" alt=""><![CDATA[ |-- SCHC Fragment Header ----| |-- T --|-M-|-- N --| +-- ...--+--+- ... -+---+- ...-+--------...-------+~~~~~~~~~~~~~~~~~~~~~-+--------...-------+~~~~~~~~~~~~~~~~~~~~ |Rule IDRuleID | DTag | W | FCN | Fragment Payload | padding (as needed) +-- ...--+--+- ... -+---+- ...-+--------...-------+~~~~~~~~~~~~~~~~~~~~~ ]]></artwork></figure>-+--------...-------+~~~~~~~~~~~~~~~~~~~~]]></artwork> </figure> <t>The FCN fieldMUST NOT<bcp14>MUST NOT</bcp14> contain all bits set to 1.</t> <t>ProfilesMUST<bcp14>MUST</bcp14> ensure that a SCHC Fragment with FCN equal to 0 (called anAll-0"All-0 SCHCFragment)Fragment") is distinguishable by size, even in the presence of padding, from a SCHC ACK REQ message (see <xreftarget="ACKREQ"/>)target="ACKREQ" format="default"/>) with the sameRule IDRuleID value and with the same T,MM, and N values. 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> </section> <section anchor="LastFrag"title="All-1numbered="true" toc="default"> <name>All-1 SCHCFragment">Fragment</name> <t>The All-1 SCHC Fragment format is shown in <xreftarget="Fig-LastFrag"/>.target="Fig-LastFrag" format="default"/>. The sender uses the All-1 SCHC Fragment format for the message that completes the emission of a fragmented SCHC Packet. The DTag field, the W field, the RCS field and the Payload areOPTIONAL,<bcp14>OPTIONAL</bcp14>, their presence is specified by each mode and Profile. At least one of RCS field or Fragment PayloadMUST<bcp14>MUST</bcp14> be present. The FCN field is all ones.</t> <figuretitle="Detailedanchor="Fig-LastFrag"> <name>Detailed Header Format for the All-1 SCHCFragment" anchor="Fig-LastFrag"><artwork><![CDATA[ |--------Fragment</name> <artwork name="" type="" align="left" alt=""><![CDATA[ |------- SCHC Fragment Header -------| |-- T --|-M-|-- N --|-- U --| +-- ...--+--+- ... -+---+- ... -+- ...-+------...-----+~~~~~~~~~~~~~~~~~~-+-----...-----+~~~~~~~~~~~~~~~~~ |Rule IDRuleID | DTag | W | 11..1 | RCS |Frag PayloadFragPayload | pad. (as needed) +-- ...--+--+- ... -+---+- ... -+- ...-+------...-----+~~~~~~~~~~~~~~~~~~ (FCN) ]]></artwork></figure>-+-----...-----+~~~~~~~~~~~~~~~~~ (FCN)]]></artwork> </figure> <t>ProfilesMUST<bcp14>MUST</bcp14> ensure that an All-1 SCHC Fragment message is distinguishable by size, even in the presence of padding, from a SCHC Sender-Abort message (see <xreftarget="SenderAbort"/>)target="SenderAbort" format="default"/>) with the sameRule IDRuleID value and with the same T,MM, and N values. This condition is met if the RCS is present and is at least the size of an L2Word,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 Words.</t> </section> </section> <section anchor="ACK"title="SCHCnumbered="true" toc="default"> <name>SCHC ACKformat">Format</name> <t>The SCHC ACK message is shown in <xreftarget="Fig-ACK-Format"/>.target="Fig-ACK-Format" format="default"/>. The DTag field and the W field areOPTIONAL,<bcp14>OPTIONAL</bcp14>, their presence is specified by each mode and Profile. The Compressed Bitmap fieldMUST<bcp14>MUST</bcp14> be present in SCHC F/R modes that usewindows,windows andMUST NOT<bcp14>MUST NOT</bcp14> be present in other modes.</t> <figuretitle="Formatanchor="Fig-ACK-Format"> <name>Format of the SCHC ACKmessage" anchor="Fig-ACK-Format"><artwork><![CDATA[ |----Message</name> <artwork name="" type="" align="left" alt=""><![CDATA[ |--- SCHC ACK Header ----| |-- T --|-M-| 1 |+---+-- ... -+- ... -+---+---+~~~~~~~~~~~~~~~~~~ |Rule IDRuleID | DTag | W |C=1| padding as needed (success)+---+-- ... -+- ... -+---+---+~~~~~~~~~~~~~~~~~~+---+-- ... -+- ... -+---+---+------ ... ------+~~~~~~~~~~~~~~~ |Rule IDRuleID | DTag | W |C=0|Compressed Bitmap| pad. as needed (failure)+---+-- ... -+- ... -+---+---+------ ...------+~~~~~~~~~~~~~~~ ]]></artwork></figure>------+~~~~~~~~~~~~~~~]]></artwork> </figure> <t>The SCHC ACK Header contains a C bit (see <xreftarget="HeaderFields"/>).</t>target="HeaderFields" format="default"/>).</t> <t>If the C bit is set to 1 (integrity check successful), no Bitmap is carried.</t> <t>If the C bit is set to 0 (integrity check not performed or failed) and if windows are used, a Compressed Bitmap for the window referred to by the W field is transmitted as specified in <xreftarget="BitmapTrunc"/>.</t>target="BitmapTrunc" format="default"/>.</t> <section anchor="BitmapTrunc"title="Bitmap Compression">numbered="true" toc="default"> <name>Bitmap Compression</name> <t>For transmission, the Compressed Bitmap in the SCHC ACK message is defined by the following algorithm (see <xreftarget="Fig-Localbitmap"/>target="Fig-Localbitmap" format="default"/> for a follow-along example):</t><t><list style="symbols"> <t>Build<ul spacing="normal"> <li>Build a temporary SCHC ACK message that contains the Header followed by the original Bitmap (see <xreftarget="Bitmap"/>target="Bitmap" format="default"/> for a description ofBitmaps).</t> <t>PositionBitmaps).</li> <li>Position scissors at the end of the Bitmap, after its lastbit.</t> <t>Whilebit.</li> <li>While the bit on the left of the scissors is 1 and belongs to the Bitmap, keep moving left, thenstop. When this is done,</t> <t>Whilestop.</li> <li>Then, while the scissors are not on an L2 Word boundary of the SCHC ACK message and there is a Bitmap bit on the right of the scissors, keep moving right, thenstop.</t> <t>Atstop.</li> <li>At this point, cut and drop off any bits to the right of thescissors</t> </list></t>scissors.</li> </ul> <t>When one or more bits have effectively been dropped off as a result of the above algorithm, the SCHC ACK message is a multiple of L2Words,Words; no padding bits will be appended.</t> <t>Because the SCHC Fragment sender knows the size of the original Bitmap, it can reconstruct the original Bitmap from the Compressed Bitmap received in theSCHSCHC ACK message.</t> <t><xreftarget="Fig-Localbitmap"/>target="Fig-Localbitmap" format="default"/> 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> <figuretitle="SCHCanchor="Fig-Localbitmap"> <name>SCHC ACK Headerplus uncompressed Bitmap" anchor="Fig-Localbitmap"><artwork><![CDATA[ |----Plus Uncompressed Bitmap</name> <artwork name="" type="" align="left" alt=""><![CDATA[ |--- SCHC ACK Header ----|-------- Bitmap --------| |-- T --|-M-| 1 |+---+-- ... -+- ... -+---+---+---------------------------------+ |Rule IDRuleID | 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>->|]]></artwork> </figure> <t><xreftarget="Fig-transmittedbitmap"/>target="Fig-transmittedbitmap" format="default"/> shows that the last 14 bits are not sent.</t> <figuretitle="Resultinganchor="Fig-transmittedbitmap"> <name>Resulting SCHC ACKmessageMessage with CompressedBitmap" anchor="Fig-transmittedbitmap"><artwork><![CDATA[ |----Bitmap</name> <artwork name="" type="" align="left" alt=""><![CDATA[ |--- SCHC ACK Header ----|CpBmp| |-- T --|-M-| 1 |+---+-- ... -+- ... -+---+---+-----+ |Rule IDRuleID | DTag | W |C=0|1 0 1|+---+-- ... -+- ... -+---+---+-----+ next L2 Word boundary->| ]]></artwork></figure>->|]]></artwork> </figure> <t><xreftarget="Fig-Bitmap-Win"/>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 indicates that the second and the fourth tile of the window have not been correctly received.</t> <figuretitle="Exampleanchor="Fig-Bitmap-Win"> <name>Example of a SCHC ACKmessage, missing tiles" anchor="Fig-Bitmap-Win"><artwork><![CDATA[ |----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 #)+---------+-------+---+---+-------------++--------+-------+---+---+-------------+ |Rule IDRuleID | DTag | W |C=0|1 0 1 0 1 1 1| uncompressed Bitmap+---------+-------+---+---+-------------++--------+-------+---+---+-------------+ next L2 Word boundary ->|<-- L2 Word-->| +---------+-------+---+---+-------------+~~~+--->| +--------+-------+---+---+-------------+~~~~+ |Rule IDRuleID | DTag | W |C=0|1 0 1 0 1 11|Pad|1|pad.| transmitted SCHC ACK+---------+-------+---+---+-------------+~~~++--------+-------+---+---+-------------+~~~~+ next L2 Word boundary ->|<-- L2 Word-->| ]]></artwork></figure>--->|]]></artwork> </figure> <t><xreftarget="Fig-Bitmap-lastWin"/>target="Fig-Bitmap-lastWin" format="default"/> shows an example of a SCHC ACK withFCNtile indices ranging from 6 down to 0, where integrity check has not been performed or has failed and the Bitmap indicates that there is no missing tile in that window.</t> <figuretitle="Exampleanchor="Fig-Bitmap-lastWin"> <name>Example of a SCHC ACKmessage, no missing tile" anchor="Fig-Bitmap-lastWin"><artwork><![CDATA[ |----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 #)+---------+-------+---+---+-------------++--------+-------+---+---+-------------+ |Rule IDRuleID | DTag | W |C=0|1 1 1 1 1 1 1| with uncompressed Bitmap+---------+-------+---+---+-------------++--------+-------+---+---+-------------+ next L2 Word boundary ->|+---+-- ... -+- ... -+---+---+-+ |Rule IDRuleID | DTag | W |C=0|1| transmitted SCHC ACK+---+-- ... -+- ... -+---+---+-+ next L2 Word boundary->| ]]></artwork></figure>->|]]></artwork> </figure> </section> </section> <section anchor="ACKREQ"title="SCHCnumbered="true" toc="default"> <name>SCHC ACK REQformat">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 <xreftarget="Fig-ACKREQ"/>.target="Fig-ACKREQ" format="default"/>. The DTag field and the W field areOPTIONAL,<bcp14>OPTIONAL</bcp14>, their presence is specified by each mode and Profile. The FCN field is all zero.</t> <figuretitle="SCHCanchor="Fig-ACKREQ"> <name>SCHC ACK REQformat" anchor="Fig-ACKREQ"><artwork><![CDATA[ |----Format</name> <artwork name="" type="" align="left" alt=""><![CDATA[ |--- SCHC ACK REQ Header ----| |-- T --|-M-|-- N --| +-- ...--+--+- ... -+---+- ... -+~~~~~~~~~~~~~~~~~~~~~ |Rule IDRuleID | DTag | W | 0..0 | padding (as needed) (no payload) +-- ...--+--+- ... -+---+- ...-+~~~~~~~~~~~~~~~~~~~~~ ]]></artwork></figure>-+~~~~~~~~~~~~~~~~~~~~~]]></artwork> </figure> </section> <section anchor="SenderAbort"title="SCHCnumbered="true" toc="default"> <name>SCHC Sender-Abortformat">Format</name> <t>When a SCHC Fragment sender needs to abort anon-goingongoing fragmented SCHC Packet transmission, it sends a SCHC Sender-Abort message to the SCHC Fragment receiver.</t> <t>The SCHC Sender-Abort format is shown in <xreftarget="Fig-SenderAbort"/>.target="Fig-SenderAbort" format="default"/>. The DTag field and the W field areOPTIONAL,<bcp14>OPTIONAL</bcp14>, their presence is specified by each mode and Profile. The FCN field is all ones.</t> <figuretitle="SCHCanchor="Fig-SenderAbort"> <name>SCHC Sender-Abortformat" anchor="Fig-SenderAbort"><artwork><![CDATA[ |----Format</name> <artwork name="" type="" align="left" alt=""><![CDATA[ |--- Sender-Abort Header ----| |-- T --|-M-|-- N --| +-- ...--+--+- ... -+---+- ... -+~~~~~~~~~~~~~~~~~~~~~ |Rule IDRuleID | DTag | W | 11..1 | padding (as needed) +-- ...--+--+- ... -+---+- ...-+~~~~~~~~~~~~~~~~~~~~~ ]]></artwork></figure>-+~~~~~~~~~~~~~~~~~~~~~]]></artwork> </figure> <t>If the W field ispresent,</t> <t><list style="symbols"> <t>thepresent:</t> <ul spacing="normal"> <li>the fragment senderMUST<bcp14>MUST</bcp14> set it to all ones. Other values areRESERVED.</t> <t>theRESERVED.</li> <li>the fragment receiverMUST<bcp14>MUST</bcp14> check its value. If the value is different from all ones, the messageMUST<bcp14>MUST</bcp14> beignored.</t> </list></t>ignored.</li> </ul> <t>The SCHC Sender-AbortMUST NOT<bcp14>MUST NOT</bcp14> be acknowledged.</t> </section> <section anchor="schc-receiver-abort-format"title="SCHCnumbered="true" toc="default"> <name>SCHC Receiver-Abortformat">Format</name> <t>When a SCHC Fragment receiver needs to abort anon-goingongoing fragmented SCHC Packet transmission, it transmits a SCHC Receiver-Abort message to the SCHC Fragment sender.</t> <t>The SCHC Receiver-Abort format is shown in <xreftarget="Fig-ReceiverAbort"/>.target="Fig-ReceiverAbort" format="default"/>. The DTag field and the W field areOPTIONAL,<bcp14>OPTIONAL</bcp14>, their presence is specified by each mode and Profile.</t> <figuretitle="SCHCanchor="Fig-ReceiverAbort"> <name>SCHC Receiver-Abortformat" anchor="Fig-ReceiverAbort"><artwork><![CDATA[ |---Format</name> <artwork name="" type="" align="left" alt=""><![CDATA[ |-- Receiver-Abort Header ---| |--- T ---|-M-| 1 | +--- ...---+----+-- ... --+---+---+-+-+-+-+-+-+-+-+-+-+-+ |Rule IDRuleID | DTag | W |C=1| 1..1| 1..1 | +--- ...---+----+-- ... --+---+---+-+-+-+-+-+-+-+-+-+-+-+ next L2 Word boundary ->|<-- L2 Word-->| ]]></artwork></figure>-->|]]></artwork> </figure> <t>If the W field ispresent,</t> <t><list style="symbols"> <t>thepresent:</t> <ul spacing="normal"> <li>the fragment receiverMUST<bcp14>MUST</bcp14> set it to all ones. Other values areRESERVED.</t> <t>ifRESERVED.</li> <li>if the value is different from all ones, the fragment senderMUST<bcp14>MUST</bcp14> ignore themessage.</t> </list></t>message.</li> </ul> <t>The SCHC Receiver-Abort has the same header as a SCHC ACK message. The bits that follow the SCHC Receiver-Abort HeaderMUST<bcp14>MUST</bcp14> be asfollows</t> <t><list style="symbols"> <t>iffollows:</t> <ul spacing="normal"> <li>if the Header does not end at an L2 Word boundary, append bits set to 1 as needed to reach the next L2 Wordboundary</t> <t>appendboundary.</li> <li>append exactly one more L2 Word with bits all set toones</t> </list></t>ones.</li> </ul> <t>Such a bit pattern never occurs in a legitimate SCHC ACK. This is how the fragment sender recognizes a SCHC Receiver-Abort.</t> <t>The SCHC Receiver-AbortMUST NOT<bcp14>MUST NOT</bcp14> be acknowledged.</t> </section> </section> <section anchor="FragModes"title="SCHCnumbered="true" toc="default"> <name>SCHC F/Rmodes">Modes</name> <t>This specification includes several SCHC F/Rmodes, which</t> <t><list style="symbols"> <t>allowmodes that:</t> <ul spacing="normal"> <li>allow for a range of reliability options, such as optional SCHC Fragmentretransmission</t> <t>supportretransmission.</li> <li>support various LPWAN characteristics, such as links with variable MTU or unidirectionallinks.</t> </list></t>links.</li> </ul> <t>More modes may be defined in the future.</t> <t><xreftarget="FragExamples"/>target="FragExamples" format="default"/> provides examples of fragmentation sessions based on the modes described hereafter.</t> <t><xreftarget="FSM"/>target="FSM" format="default"/> provides examples of Finite State Machines implementing the SCHC F/R modes described hereafter.</t> <section anchor="No-ACK-subsection"title="No-ACK mode">numbered="true" toc="default"> <name>No-ACK Mode</name> <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 supportsLPWANL2 technologies that have a variable MTU.</t> <t>In No-ACK mode, there is no communication from the fragment receiver to the fragment sender. The sender transmits all the SCHC Fragments without expecting any acknowledgement. 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. The other SCHC Fragments are intrinsically aligned to L2 Words.</t> <t>The tile sizes are not required to be uniform. Windows are not used. The Retransmission Timer is not used. The Attempts counter is not used.</t> <t>Each ProfileMUST<bcp14>MUST</bcp14> specify whichRule IDRuleID value(s)correspondcorresponds to SCHC F/R messages operating in this mode.</t> <t>The W fieldMUST NOT<bcp14>MUST NOT</bcp14> be present in the SCHC F/R messages. SCHC ACKMUST NOT<bcp14>MUST NOT</bcp14> be sent. SCHC ACK REQMUST NOT<bcp14>MUST NOT</bcp14> be sent. SCHC Sender-AbortMAY<bcp14>MAY</bcp14> be sent. SCHC Receiver-AbortMUST NOT<bcp14>MUST NOT</bcp14> be sent.</t> <t>The value of N (size of the FCN field) isRECOMMENDED<bcp14>RECOMMENDED</bcp14> to be 1.</t> <t>Each Profile, for eachRule IDRuleID value,MUST define</t> <t><list style="symbols"> <t>the<bcp14>MUST</bcp14> define:</t> <ul spacing="normal"> <li>the size of the DTagfield,</t> <t>thefield,</li> <li>the size and algorithm for the RCSfield,</t> <t>thefield, and</li> <li>the expiration time of the InactivityTimer</t> </list></t>Timer.</li> </ul> <t>Each Profile, for eachRule IDRuleID value,MAY<bcp14>MAY</bcp14> define</t><t><list style="symbols"> <t>a<ul spacing="normal"> <li>a value of N different from the recommendedone,</t> <t>theone, and</li> <li>the meaning of values sent in the FCN field, for values different from the All-1value.</t> </list></t>value.</li> </ul> <t>For each active pair ofRule IDRuleID and DTag values, the receiverMUST<bcp14>MUST</bcp14> maintain an Inactivity Timer. If the receiver is under-resourced to do this, itMUST<bcp14>MUST</bcp14> silently drop the related messages.</t> <section anchor="sender-behavior"title="Sender behavior">numbered="true" toc="default"> <name>Sender Behavior</name> <t>At the beginning of the fragmentation of a new SCHC Packet, the fragment senderMUST<bcp14>MUST</bcp14> select aRule IDRuleID and DTag value pair for this SCHC Packet.</t> <t>Each SCHC FragmentMUST<bcp14>MUST</bcp14> contain exactly one tile in its Payload. The tileMUST<bcp14>MUST</bcp14> be at least the size of an L2 Word. The senderMUST<bcp14>MUST</bcp14> 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 tileMUST<bcp14>MUST</bcp14> be of a size that complements the SCHC Fragment Header so that the SCHC Fragment is a multiple of L2 Words without the need for padding bits. Except for the last one, the SCHC FragmentsMUST<bcp14>MUST</bcp14> use the Regular SCHC Fragment format specified in <xreftarget="NotLastFrag"/>.target="NotLastFrag" format="default"/>. The SCHC Fragment that carries the last tileMUST<bcp14>MUST</bcp14> be an All-1 SCHC Fragment, described in <xreftarget="LastFrag"/>.</t>target="LastFrag" format="default"/>.</t> <t>The senderMAY<bcp14>MAY</bcp14> transmit a SCHC Sender-Abort.</t> <t><xreftarget="Fig-NoACKModeSnd"/>target="Fig-NoACKModeSnd" format="default"/> shows an example of a corresponding state machine.</t> </section> <section anchor="receiver-behavior"title="Receiver behavior">numbered="true" toc="default"> <name>Receiver Behavior</name> <t>Upon receiving each Regular SCHCFragment,</t> <t><list style="symbols"> <t>theFragment:</t> <ul spacing="normal"> <li>the receiverMUST<bcp14>MUST</bcp14> reset the InactivityTimer,</t> <t>theTimer.</li> <li>the receiver assembles the payloads of the SCHCFragments</t> </list></t>Fragments.</li> </ul> <t>On receiving an All-1 SCHCFragment,</t> <t><list style="symbols"> <t>theFragment:</t> <ul spacing="normal"> <li>the receiverMUST<bcp14>MUST</bcp14> append the All-1 SCHC Fragment Payload and the padding bits to the previously received SCHC Fragment Payloads for this SCHCPacket</t> <t>thePacket.</li> <li>the receiverMUST<bcp14>MUST</bcp14> perform the integritycheck</t> <t>ifcheck.</li> <li>if integrity checking fails, the receiverMUST<bcp14>MUST</bcp14> drop the reassembled SCHCPacket</t> <t>thePacket.</li> <li>the reassembly operationconcludes.</t> </list></t>concludes.</li> </ul> <t>On expiration of the Inactivity Timer, the receiverMUST<bcp14>MUST</bcp14> drop the SCHC Packet being reassembled.</t> <t>On receiving a SCHC Sender-Abort, the receiverMAY<bcp14>MAY</bcp14> drop the SCHC Packet being reassembled.</t> <t><xreftarget="Fig-NoACKModeRcv"/>target="Fig-NoACKModeRcv" format="default"/> shows an example of a corresponding state machine.</t> </section> </section> <section anchor="ACK-Always-subsection"title="ACK-Always mode">numbered="true" toc="default"> <name>ACK-Always Mode</name> <t>The ACK-Always mode has been designed under the followingassumptions</t> <t><list style="symbols"> <t>Dataassumptions:</t> <ul spacing="normal"> <li>Data unit out-of-sequence delivery does not occur between the entity performing fragmentation and the entity performingreassembly</t> <t>Thereassembly,</li> <li>The L2 MTU value does not change while the fragments of a SCHC Packet are beingtransmitted.</t> <t>Theretransmitted, and</li> <li>There is a feedback path from the reassembler to the fragmenter. See <xreftarget="AsymLinks"/>target="AsymLinks" format="default"/> for a discussion on using ACK-Always mode on quasi-bidirectionallinks.</t> </list></t>links.</li> </ul> <t>In ACK-Always mode, windows are used. An acknowledgement, positive or negative, is transmitted by the fragment receiver to the fragment sender at the end of the transmission of each window of SCHC Fragments.</t> <t>The tiles are not required to be of uniform size. In ACK-Always mode, only the All-1 SCHC Fragment is padded as needed. The other SCHC Fragments are intrinsically aligned to L2 Words.</t> <t>Briefly, the algorithm is as follows: after a first blind transmission of all the tiles of a window, the fragment sender iterates retransmitting the tiles that are reported missing until the fragment receiver reports that all the tiles belonging to the window have been correctlyreceived,received or until too many attempts were made. The fragment sender only advances to the next window of tiles when it has ascertained that all the tiles belonging to the current window have been fully and correctly received. This results in a per-window lock-step behavior between the sender and the receiver.</t> <t>Each ProfileMUST<bcp14>MUST</bcp14> specify whichRule IDRuleID value(s) correspond to SCHC F/R messages operating in this mode.</t> <t>The W fieldMUST<bcp14>MUST</bcp14> be present and its size MMUST<bcp14>MUST</bcp14> be 1 bit.</t> <t>Each Profile, for eachRule IDRuleID value,MUST define</t> <t><list style="symbols"> <t>the<bcp14>MUST</bcp14> define:</t> <ul spacing="normal"> <li>the value ofN (size of the FCN field),</t> <t>theN,</li> <li>the value of WINDOW_SIZE, whichMUST<bcp14>MUST</bcp14> be strictly less than2^N,</t> <t>the2^N,</li> <li>the size and algorithm for the RCSfield,</t> <t>the sizefield,</li> <li>the value ofthe DTag field,</t> <t>theT,</li> <li>the value ofMAX_ACK_REQUESTS,</t> <t>theMAX_ACK_REQUESTS,</li> <li>the expiration time of the RetransmissionTimer</t> <t>theTimer, and</li> <li>the expiration time of the InactivityTimer</t> </list></t>Timer.</li> </ul> <t>For each active pair ofRule IDRuleID and DTag values, the senderMUST maintain</t> <t><list style="symbols"> <t>one<bcp14>MUST</bcp14> maintain:</t> <ul spacing="normal"> <li>one Attemptscounter</t> <t>onecounter</li> <li>one RetransmissionTimer</t> </list></t>Timer</li> </ul> <t>For each active pair ofRule IDRuleID and DTag values, the receiverMUST<bcp14>MUST</bcp14> maintain</t><t><list style="symbols"> <t>one<ul spacing="normal"> <li>one InactivityTimer</t> <t>oneTimer, and</li> <li>one Attemptscounter</t> </list></t>counter.</li> </ul> <section anchor="sender-behavior-1"title="Sender behavior">numbered="true" toc="default"> <name>Sender Behavior</name> <t>At the beginning of the fragmentation of a new SCHC Packet, the fragment senderMUST<bcp14>MUST</bcp14> select aRule IDRuleID and DTag value pair for this SCHC Packet.</t> <t>Each SCHC FragmentMUST<bcp14>MUST</bcp14> contain exactly one tile in its Payload. All tiles with the index 0, as well as the last tile,MUST<bcp14>MUST</bcp14> be at least the size of an L2 Word.</t> <t>In all SCHC Fragment messages, the W fieldMUST<bcp14>MUST</bcp14> be filled with theleast significant bitLSB of the window number that the sender is currently processing.</t> <t>For a SCHC Fragment that carries a tile other than the last one of the SCHCPacket,</t> <t><list style="symbols"> <t>thePacket:</t> <ul spacing="normal"> <li>the FragmentMUST<bcp14>MUST</bcp14> be of the Regular type specified in <xreftarget="NotLastFrag"/></t> <t>thetarget="NotLastFrag" format="default"/>.</li> <li>the FCN fieldMUST<bcp14>MUST</bcp14> contain the tileindex</t> <t>eachindex.</li> <li>each tileMUST<bcp14>MUST</bcp14> be of a size that complements the SCHC Fragment Header so that the SCHC Fragment is a multiple of L2 Words without the need for paddingbits.</t> </list></t>bits.</li> </ul> <t>The SCHC Fragment that carries the last tileMUST<bcp14>MUST</bcp14> be an All-1 SCHC Fragment, described in <xreftarget="LastFrag"/>.</t>target="LastFrag" format="default"/>.</t> <t>The fragment senderMUST<bcp14>MUST</bcp14> start by transmitting the window numbered 0.</t> <t>All message receptions being discussed in the rest of this section are to be understood as“matching"matching the RuleID and DTag pair beingprocessed”,processed", even if not spelled out, for brevity.</t> <t>The sender starts by a“blind transmission”"blind transmission" phase, in which itMUST<bcp14>MUST</bcp14> transmit all the tiles composing the window, in decreasing tile index order.</t> <t>Then, it enters a“retransmission phase”"retransmission phase" in which itMUST<bcp14>MUST</bcp14> initialize an Attempts counter to 0, itMUST<bcp14>MUST</bcp14> start a Retransmission Timer and itMUST<bcp14>MUST</bcp14> await a SCHC ACK.Then,</t> <t><list style="symbols"> <t>upon</t> <ul spacing="normal"> <li> <t>Then, upon receiving a SCHCACK, <list style="symbols"> <t>ifACK:</t> <ul spacing="normal"> <li>if the SCHC ACK indicates that some tiles are missing at the receiver, then the senderMUST<bcp14>MUST</bcp14> transmit all the tiles that have been reported missing, itMUST<bcp14>MUST</bcp14> increment Attempts, itMUST<bcp14>MUST</bcp14> reset the RetransmissionTimerTimer, andMUST<bcp14>MUST</bcp14> await the next SCHCACK.</t> <t>ifACK.</li> <li>if the current window is not the last one and the SCHC ACK indicates that all tiles were correctly received, the senderMUST<bcp14>MUST</bcp14> stop the Retransmission Timer, itMUST<bcp14>MUST</bcp14> advance to the next fragmentationwindowwindow, and itMUST<bcp14>MUST</bcp14> start a blind transmission phase as describedabove.</t> <t>ifabove.</li> <li>if the current window is the last one and the SCHC ACK indicates that more tiles were received than the sender sent, the fragment senderMUST<bcp14>MUST</bcp14> send a SCHC Sender-Abort, and itMAY<bcp14>MAY</bcp14> exit with an errorcondition.</t> <t>ifcondition.</li> <li>if the current window is the last one and the SCHC ACK indicates that all tiles were correctlyreceivedreceived, yet the integrity check was a failure, the fragment senderMUST<bcp14>MUST</bcp14> send a SCHC Sender-Abort, and itMAY<bcp14>MAY</bcp14> exit with an errorcondition.</t> <t>ifcondition.</li> <li>if the current window is the last one and the SCHC ACK indicates that integrity checking was successful, the sender exitssuccessfully.</t> </list></t>successfully.</li> </ul> </li> <li> <t>on Retransmission Timerexpiration, <list style="symbols"> <t>ifexpiration: </t> <ul spacing="normal"> <li>if Attempts is strictly less that MAX_ACK_REQUESTS, the fragment senderMUST<bcp14>MUST</bcp14> send a SCHC ACK REQ andMUST<bcp14>MUST</bcp14> increment the Attemptscounter.</t> <t>otherwisecounter.</li> <li>otherwise, the fragment senderMUST<bcp14>MUST</bcp14> send a SCHC Sender-Abort, and itMAY<bcp14>MAY</bcp14> exit with an errorcondition.</t> </list></t> </list></t>condition.</li> </ul> </li> </ul> <t>At anytime,</t> <t><list style="symbols"> <t>ontime:</t> <ul spacing="normal"> <li>on receiving a SCHC Receiver-Abort, the fragment senderMAY<bcp14>MAY</bcp14> exit with an errorcondition.</t> <t>oncondition.</li> <li>on receiving a SCHC ACK that bears a W value different from the W value that it currently uses, the fragment senderMUST<bcp14>MUST</bcp14> silently discard and ignore that SCHCACK.</t> </list></t>ACK.</li> </ul> <t><xreftarget="Fig-ACKAlwaysSnd"/>target="Fig-ACKAlwaysSnd" format="default"/> shows an example of a corresponding state machine.</t> </section> <section anchor="receiver-behavior-1"title="Receiver behavior">numbered="true" toc="default"> <name>Receiver Behavior</name> <t>On receiving a SCHC Fragment with aRule IDRuleID and DTag pair not being processed at thattime</t> <t><list style="symbols"> <t>thetime:</t> <ul spacing="normal"> <li>the receiverSHOULD<bcp14>SHOULD</bcp14> check if the DTag value has not recently been used for thatRule IDRuleID value, thereby ensuring that the received SCHC Fragment is not a remnant of a prior fragmented SCHC Packet transmission. The initial value of the Inactivity Timer is theRECOMMENDED<bcp14>RECOMMENDED</bcp14> lifetime for the DTag value at the receiver. If the SCHC Fragment is determined to be such a remnant, the receiverMAY<bcp14>MAY</bcp14> silently ignore it and discardit.</t> <t>theit.</li> <li>the receiverMUST<bcp14>MUST</bcp14> start a process to assemble a new SCHC Packet with thatRule IDRuleID and DTag valuepair.</t> <t>thepair.</li> <li>the receiverMUST<bcp14>MUST</bcp14> start an Inactivity Timer for that RuleID and DTag pair. ItMUST<bcp14>MUST</bcp14> initialize an Attempts counter to 0 for that RuleID and DTag pair. ItMUST<bcp14>MUST</bcp14> initialize a window counter to 0. If the receiver is under-resourced to do this, itMUST<bcp14>MUST</bcp14> respond to the sender with a SCHCReceiver Abort.</t> </list></t>Receiver-Abort.</li> </ul> <t>In the rest of this section,“local"local Wbit”bit" means the least significant 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 processed, the receiverMUST<bcp14>MUST</bcp14> reset the Inactivity Timer pertaining to that RuleID and DTag pair.</t> <t>All message receptions being discussed in the rest of this section are to be understood as“matching"matching the RuleID and DTag pair beingprocessed”,processed", even if not spelled out, for brevity.</t> <t>The receiverMUST<bcp14>MUST</bcp14> first initialize an empty Bitmap for the firstwindow,window then enter an“acceptance phase”,"acceptance phase", inwhich</t> <t><list style="symbols"> <t>onwhich:</t> <ul spacing="normal"> <li>on receiving a SCHC Fragment or a SCHC ACK REQ, either one having the W bit different from the local W bit, the receiverMUST<bcp14>MUST</bcp14> silently ignore and discard thatmessage.</t> <t>onmessage.</li> <li>on receiving a SCHC ACK REQ with the W bit equal to the local W bit, the receiverMUST<bcp14>MUST</bcp14> send a SCHC ACK for thiswindow.</t>window.</li> <li> <t>on receiving a SCHC Fragment with the W bit equal to the local W bit, the receiverMUST<bcp14>MUST</bcp14> assemble the received tile based on the window counter and on the FCN field in the SCHCFragmentFragment, and itMUST<bcp14>MUST</bcp14> update the Bitmap.<list style="symbols"> <t>if</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 receiverMUST<bcp14>MUST</bcp14> send a SCHC ACK for this window and itMUST<bcp14>MUST</bcp14> enter the“retransmission phase”"retransmission phase" for thiswindow.</t>window.</li> <li> <t>if the SCHC Fragment received is an All-1 SCHC Fragment, the current window is determined to be the last window, the padding bits of the All-1 SCHC FragmentMUST<bcp14>MUST</bcp14> be assembled after the received tile, thecurrent window is determined to be the last window, thereceiverMUST<bcp14>MUST</bcp14> perform the integrity check and itMUST<bcp14>MUST</bcp14> send a SCHC ACK for this window.Then, <list style="symbols"> <t>IfThen: </t> <ul spacing="normal"> <li>If the integrity check indicates that the full SCHC Packet has been correctly reassembled, the receiverMUST<bcp14>MUST</bcp14> enter the“clean-up phase”"clean-up phase" for thiswindow.</t> <t>Ifwindow.</li> <li>If the integrity check indicates that the full SCHC Packet has not been correctly reassembled, the receiver enters the“retransmission phase”"retransmission phase" for thiswindow.</t> </list></t> </list></t> </list></t>window.</li> </ul> </li> </ul> </li> </ul> <t>In the“retransmission phase”:</t> <t><list style="symbols">"retransmission phase":</t> <ul spacing="normal"> <li> <t>if the window is a not-lastwindow <list style="symbols"> <t>onwindow:</t> <ul spacing="normal"> <li>on receiving a SCHC Fragment that is not All-0 or All-1 and that has a W bit different from the local W bit, the receiverMUST<bcp14>MUST</bcp14> increment its window counter and allocate a fresh Bitmap, itMUST<bcp14>MUST</bcp14> assemble the tile received and update theBitmapBitmap, and itMUST<bcp14>MUST</bcp14> enter the“acceptance phase”"acceptance phase" for that newwindow.</t> <t>onwindow.</li> <li>on receiving a SCHC ACK REQ with a W bit different from the local W bit, the receiverMUST<bcp14>MUST</bcp14> increment its window counter and allocate a fresh Bitmap, itMUST<bcp14>MUST</bcp14> send a SCHC ACK for that newwindowwindow, and itMUST<bcp14>MUST</bcp14> enter the“acceptance phase”"acceptance phase" for that newwindow.</t> <t>onwindow.</li> <li>on receiving a SCHC All-0 Fragment with a W bit different from the local W bit, the receiverMUST<bcp14>MUST</bcp14> increment its window counter and allocate a fresh Bitmap, itMUST<bcp14>MUST</bcp14> assemble the tile received and update the Bitmap, itMUST<bcp14>MUST</bcp14> send a SCHC ACK for that newwindowwindow, and itMUST<bcp14>MUST</bcp14> stay in the“retransmission phase”"retransmission phase" for that newwindow.</t>window.</li> <li> <t>on receiving a SCHC All-1 Fragment with a W bit different from the local W bit, the receiverMUST<bcp14>MUST</bcp14> increment its window counter and allocate a freshBitmap,Bitmap; itMUST<bcp14>MUST</bcp14> assemble the tile received, including the paddingbits,bits; itMUST<bcp14>MUST</bcp14> update the Bitmap and perform the integritycheck,check; itMUST<bcp14>MUST</bcp14> send a SCHC ACK for the new window, which is determined to be the last window.Then, <list style="symbols"> <t>IfThen:</t> <ul spacing="normal"> <li>If the integrity check indicates that the full SCHC Packet has been correctly reassembled, the receiverMUST<bcp14>MUST</bcp14> enter the“clean-up phase”"clean-up phase" for that newwindow.</t> <t>Ifwindow.</li> <li>If the integrity check indicates that the full SCHC Packet has not been correctly reassembled, the receiver enters the“retransmission phase”"retransmission phase" for that newwindow.</t> </list></t>window.</li> </ul> </li> <li> <t>on receiving a SCHC Fragment with a W bit equal to the local Wbit, <list style="symbols"> <t>ifbit:</t> <ul spacing="normal"> <li>if the SCHC Fragment received is an All-1 SCHC Fragment, the receiverMUST<bcp14>MUST</bcp14> silently ignore it and discardit.</t> <t>otherwise,it.</li> <li>otherwise, the receiverMUST<bcp14>MUST</bcp14> assemble the tile received and update the Bitmap. If the Bitmap becomes fully populated with1’s1's or if the SCHC Fragment is an All-0, the receiverMUST<bcp14>MUST</bcp14> send a SCHC ACK for thiswindow.</t> </list></t> <t>onwindow.</li> </ul> </li> <li>on receiving a SCHC ACK REQ with the W bit equal to the local W bit, the receiverMUST<bcp14>MUST</bcp14> send a SCHC ACK for thiswindow.</t> </list></t>window.</li> </ul> </li> <li> <t>if the window is the lastwindow <list style="symbols"> <t>onwindow:</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 receiverMUST<bcp14>MUST</bcp14> silently ignore and discard thatmessage.</t> <t>onmessage.</li> <li>on receiving a SCHC ACK REQ with the W bit equal to the local W bit, the receiverMUST<bcp14>MUST</bcp14> send a SCHC ACK for thiswindow.</t>window.</li> <li> <t>on receiving a SCHC Fragment with a W bit equal to the local Wbit, <list style="symbols"> <t>ifbit:</t> <ul spacing="normal"> <li>if the SCHC Fragment received is an All-0 SCHC Fragment, the receiverMUST<bcp14>MUST</bcp14> silently ignore it and discardit.</t>it.</li> <li> <t>otherwise, the receiverMUST<bcp14>MUST</bcp14> update theBitmapBitmap, and itMUST<bcp14>MUST</bcp14> assemble the tile received. If the SCHC Fragment received is an All-1 SCHC Fragment, the receiverMUST<bcp14>MUST</bcp14> assemble the padding bits of the All-1 SCHC Fragment after the received tile, itMUST<bcp14>MUST</bcp14> perform the integrity checkand <list style="symbols"> <t>ifand:</t> <ul spacing="normal"> <li>if the integrity check indicates that the full SCHC Packet has been correctly reassembled, the receiverMUST<bcp14>MUST</bcp14> send a SCHC ACK and it enters the“clean-up phase”.</t>"clean-up phase".</li> <li> <t>if the integrity check indicates that the full SCHC Packet has not been correctlyreassembled, <list style="symbols"> <t>ifreassembled: </t> <ul spacing="normal"> <li>if the SCHC Fragment received was an All-1 SCHC Fragment, the receiverMUST<bcp14>MUST</bcp14> send a SCHC ACK for thiswindow.</t> </list></t> </list></t> </list></t> </list></t> </list></t>window.</li> </ul> </li> </ul> </li> </ul> </li> </ul> </li> </ul> <t>In the“clean-up phase”:</t> <t><list style="symbols"> <t>On"clean-up phase":</t> <ul spacing="normal"> <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 receiverMUST<bcp14>MUST</bcp14> send a SCHCACK.</t> <t>AnyACK.</li> <li>Any other SCHC Fragment receivedMUST<bcp14>MUST</bcp14> be silently ignored anddiscarded.</t> </list></t>discarded.</li> </ul> <t>At any time, on sending a SCHC ACK, the receiverMUST<bcp14>MUST</bcp14> increment the Attempts counter.</t> <t>At any time, on incrementing its window counter, the receiverMUST<bcp14>MUST</bcp14> reset the Attempts counter.</t> <t>At any time, on expiration of the Inactivity Timer, on receiving a SCHC Sender-Abort or when Attempts reaches MAX_ACK_REQUESTS, the receiverMUST<bcp14>MUST</bcp14> send a SCHCReceiver-AbortReceiver-Abort, and itMAY<bcp14>MAY</bcp14> exit the receive process for that SCHC Packet.</t> <t><xreftarget="Fig-ACKAlwaysRcv"/>target="Fig-ACKAlwaysRcv" format="default"/> shows an example of a corresponding state machine.</t> </section> </section> <section anchor="ACK-on-Error-subsection"title="ACK-on-Error mode">numbered="true" toc="default"> <name>ACK-on-Error Mode</name> <t>The ACK-on-Error mode supportsLPWANL2 technologies that have variable MTU and out-of-order delivery. Itoperates with linksrequires an L2 thatprovideprovides a feedback path from the reassembler to the fragmenter. See <xreftarget="AsymLinks"/>target="AsymLinks" format="default"/> for a discussion on using ACK-on-Error mode on quasi-bidirectional links.</t> <t>In ACK-on-Error mode, windows are used.</t> <t>Alltiles, buttiles except the last one and the penultimateone, MUSTone <bcp14>MUST</bcp14> be of equal size, hereafter called“regular”."regular". The size of the last tileMUST<bcp14>MUST</bcp14> be smaller than or equal to the regular tile size. Regarding the penultimate tile, a ProfileMUST<bcp14>MUST</bcp14> pick one of the following two options:</t><t><list style="symbols"> <t>The<ul spacing="normal"> <li>The penultimate tile sizeMUST<bcp14>MUST</bcp14> be the regular tilesize</t> <t>or thesize, or</li> <li>the penultimate tile sizeMUST<bcp14>MUST</bcp14> be either the regular tile size or the regular tile size minus one L2Word.</t> </list></t>Word.</li> </ul> <t>A SCHC Fragment message carries one or several contiguous tiles, which may span multiple windows. A SCHC ACK reports on the reception of exactly one window of tiles.</t> <t>See <xreftarget="Fig-TilesACKonError"/>target="Fig-TilesACKonError" format="default"/> for an example.</t> <figuretitle="a SCHCanchor="Fig-TilesACKonError"> <name>SCHC PacketfragmentedFragmented intiles,Tiles, ACK-on-Errormode" anchor="Fig-TilesACKonError"><artwork><![CDATA[Mode</name> <artwork name="" type="" align="left" alt=""><![CDATA[ +---------------------------------------------...-----------+ | SCHC Packet | +---------------------------------------------...-----------+Tile #Tile# | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 | 4 | | 0 | 4 |3|Window #Window# |-------- 0 --------|-------- 1 --------|- 2 ... 27 -|- 28-| SCHC Fragment msg|-----------| ]]></artwork></figure>|-----------|]]></artwork> </figure> <t>The W field is wide enough that it unambiguously represents an absolute window number. The fragment receiver sends SCHC ACKs to the fragment sender about windows for which tiles are missing. 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 reported missing. It can advance to next windows even before it has ascertained that all tiles belonging to previous windows have been correctly received, and it can still later retransmit SCHC Fragments with tiles belonging to previous windows. Therefore, the sender and the receiver may operate in a decoupled fashion. The fragmented SCHC Packet transmission concludeswhen</t> <t><list style="symbols"> <t>integritywhen:</t> <ul spacing="normal"> <li>integrity checking shows that the fragmented SCHC Packet has been correctly reassembled at the receive end, and this information has been conveyed back to thesender,</t> <t>or toosender, or</li> <li>too many retransmission attempts weremade,</t> <t>or themade, or</li> <li>the receiver determines that the transmission of this fragmented SCHC Packet has been inactive for toolong.</t> </list></t>long.</li> </ul> <t>Each ProfileMUST<bcp14>MUST</bcp14> specify whichRule IDRuleID value(s)correspondcorresponds to SCHC F/R messages operating in this mode.</t> <t>The W fieldMUST<bcp14>MUST</bcp14> be present in the SCHC F/R messages.</t> <t>Each Profile, for eachRule IDRuleID value,MUST define</t> <t><list style="symbols"> <t>the<bcp14>MUST</bcp14> define:</t> <ul spacing="normal"> <li>the tile size (a tile does not need to be multiple of an L2 Word, but itMUST<bcp14>MUST</bcp14> be at least the size of an L2Word)</t> <t>theWord),</li> <li>the value ofM (size of the W field),</t> <t>theM,</li> <li>the value ofN (size of the FCN field),</t> <t>theN,</li> <li>the value of WINDOW_SIZE, whichMUST<bcp14>MUST</bcp14> be strictly less than2^N,</t> <t>the2^N,</li> <li>the size and algorithm for the RCSfield,</t> <t>the sizefield,</li> <li>the value ofthe DTag field,</t> <t>theT,</li> <li>the value ofMAX_ACK_REQUESTS,</t> <t>theMAX_ACK_REQUESTS,</li> <li>the expiration time of the RetransmissionTimer</t> <t>theTimer,</li> <li>the expiration time of the InactivityTimer</t> <t>whetherTimer,</li> <li>if the last tile is carried in a Regular SCHC Fragment or an All-1 SCHC Fragment (see <xreftarget="ACK-on-Error-sender"/>)</t> <t>iftarget="ACK-on-Error-sender" format="default"/>), and</li> <li>if the penultimate tileMAY<bcp14>MAY</bcp14> be one L2 Word smaller than the regular tile size. In this case, the regular tile sizeMUST<bcp14>MUST</bcp14> be at least twice the L2 Wordsize.</t> </list></t>size.</li> </ul> <t>For each active pair ofRule IDRuleID and DTag values, the senderMUST maintain</t> <t><list style="symbols"> <t>one<bcp14>MUST</bcp14> maintain:</t> <ul spacing="normal"> <li>one Attemptscounter</t> <t>onecounter, and</li> <li>one RetransmissionTimer</t> </list></t>Timer.</li> </ul> <t>For each active pair ofRule IDRuleID and DTag values, the receiverMUST maintain</t> <t><list style="symbols"> <t>one<bcp14>MUST</bcp14> maintain:</t> <ul spacing="normal"> <li>one InactivityTimer</t> <t>oneTimer, and</li> <li>one Attemptscounter</t> </list></t>counter.</li> </ul> <section anchor="ACK-on-Error-sender"title="Sender behavior">numbered="true" toc="default"> <name>Sender Behavior</name> <t>At the beginning of the fragmentation of a new SCHCPacket,</t> <t><list style="symbols"> <t>thePacket:</t> <ul spacing="normal"> <li>the fragment senderMUST<bcp14>MUST</bcp14> select aRule IDRuleID and DTag value pair for this SCHC Packet. A RuleMUST NOT<bcp14>MUST NOT</bcp14> be selected if the values of M and WINDOW_SIZE for that Rule are such that the SCHC Packet cannot be fragmented in (2^M) * WINDOW_SIZE tiles orless.</t> <t>theless.</li> <li>the fragment senderMUST<bcp14>MUST</bcp14> initialize the Attempts counter to 0 for thatRule IDRuleID and DTag valuepair.</t> </list></t>pair.</li> </ul> <t>A Regular SCHC Fragment message carries in its payload one or more tiles. If more than one tile is carried in one Regular SCHCFragment</t> <t><list style="symbols"> <t>theFragment:</t> <ul spacing="normal"> <li>the selected tilesMUST<bcp14>MUST</bcp14> be contiguous in the original SCHCPacket</t> <t>they MUSTPacket, and</li> <li>they <bcp14>MUST</bcp14> be placed in the SCHC Fragment Payload adjacent to one another, in the order they appear in the SCHC Packet, from the start of the SCHC Packet toward itsend.</t> </list></t>end.</li> </ul> <t>Tiles that are not the last oneMUST<bcp14>MUST</bcp14> be sent in Regular SCHC Fragments specified in <xreftarget="NotLastFrag"/>.target="NotLastFrag" format="default"/>. The FCN fieldMUST<bcp14>MUST</bcp14> contain the tile index of the first tile sent in that SCHC Fragment.</t> <t>In a Regular SCHC Fragment message, the senderMUST<bcp14>MUST</bcp14> fill the W field with the window number of the first tile sent in that SCHC Fragment.</t><t>Depending on the Profile,<t>A Profile <bcp14>MUST</bcp14> define if the last tile of a SCHC PacketMUST be sent either</t> <t><list style="symbols"> <t>inis sent:</t> <ul spacing="normal"> <li>in a Regular SCHC Fragment, alone or as part of a multi-tilesPayload</t> <t>alonePayload,</li> <li>alone in an All-1 SCHCFragment</t> </list></t>Fragment, or</li> <li>with any of the above two methods.</li> </ul> <t>In an All-1 SCHC Fragment message, the senderMUST<bcp14>MUST</bcp14> fill the W field with the window number of the last tile of the SCHC Packet.</t> <t>The fragment senderMUST<bcp14>MUST</bcp14> send SCHC Fragments such that, all together, they contain all the tiles of the fragmented SCHC Packet.</t> <t>The fragment senderMUST<bcp14>MUST</bcp14> send at least one All-1 SCHC Fragment.</t> <t>In doing the two items above, the sender <bcp14>MUST</bcp14> ascertain that the receiver will not receive the last tile through both a Regular SCHC Fragment and an All-1 SCHC Fragment.</t> <t>The fragment senderMUST<bcp14>MUST</bcp14> listen for SCHC ACK messages after havingsent</t> <t><list style="symbols"> <t>ansent:</t> <ul spacing="normal"> <li>an All-1 SCHCFragment</t> <t>or aFragment, or</li> <li>a SCHC ACKREQ.</t> </list></t>REQ.</li> </ul> <t>A ProfileMAY<bcp14>MAY</bcp14> specify other times at which the fragment senderMUST<bcp14>MUST</bcp14> listen for SCHC ACK messages. 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 SCHC ACKREQ,</t> <t><list style="symbols"> <t>it MUSTREQ:</t> <ul spacing="normal"> <li>it <bcp14>MUST</bcp14> increment the Attemptscounter</t> <t>it MUSTcounter, and</li> <li>it <bcp14>MUST</bcp14> reset the RetransmissionTimer</t> </list></t>Timer.</li> </ul> <t>On Retransmission Timerexpiration</t> <t><list style="symbols"> <t>ifexpiration:</t> <ul spacing="normal"> <li>if the Attempts counter is strictly less than MAX_ACK_REQUESTS, the fragment senderMUST<bcp14>MUST</bcp14> send either the All-1 SCHC Fragment or a SCHC ACK REQ with the W field corresponding to the lastwindow,</t> <t>otherwisewindow,</li> <li>otherwise, the fragment senderMUST<bcp14>MUST</bcp14> send a SCHCSender-AbortSender-Abort, and itMAY<bcp14>MAY</bcp14> exit with an errorcondition.</t> </list></t>condition.</li> </ul> <t>All message receptions being discussed in the rest of this section are to be understood as“matching"matching the RuleID and DTag pair beingprocessed”,processed", even if not spelled out, for brevity.</t> <t>On receiving a SCHCACK,</t> <t><list style="symbols">ACK:</t> <ul spacing="normal"> <li> <t>if the W field in the SCHC ACK corresponds to the last window of the SCHCPacket, <list style="symbols"> <t>ifPacket:</t> <ul spacing="normal"> <li>if the C bit is set, the senderMAY<bcp14>MAY</bcp14> exitsuccessfully</t> <t>otherwise, <list style="symbols">successfully.</li> <li> <t>otherwise: </t> <ul spacing="normal"> <li> <t>if the Profile mandates that the last tile be sent in an All-1 SCHCFragment, <list style="symbols">Fragment:</t> <ul spacing="normal"> <li> <t>if the SCHC ACK shows no missing tile at the receiver, thesender <list style="symbols"> <t>MUSTsender:</t> <ul spacing="normal"> <li><bcp14>MUST</bcp14> send a SCHCSender-Abort</t> <t>MAYSender-Abort, and</li> <li><bcp14>MAY</bcp14> exit with an errorcondition</t> </list></t> <t>otherwise <list style="symbols"> <t>thecondition.</li> </ul> </li> <li> <t>otherwise:</t> <ul spacing="normal"> <li>the fragment senderMUST<bcp14>MUST</bcp14> send SCHC Fragment messages containing all the tiles that are reported missing in the SCHCACK.</t> <t>ifACK.</li> <li>if the last of these SCHC Fragment messages is not an All-1 SCHC Fragment, then the fragment senderMUST<bcp14>MUST</bcp14> in addition send after it a SCHC ACK REQ with the W field corresponding to the lastwindow.</t> </list></t> </list></t> <t>otherwise, <list style="symbols"> <t>ifwindow.</li> <li>in doing the two items above, the sender <bcp14>MUST</bcp14> ascertain that the receiver will not receive the last tile through both a Regular SCHC Fragment and an All-1 SCHC Fragment.</li> </ul> </li> </ul> </li> <li> <t>otherwise:</t> <ul spacing="normal"> <li>if the SCHC ACK shows no missing tile at the receiver, the senderMUST<bcp14>MUST</bcp14> send the All-1 SCHCFragment</t> <t>otherwise <list style="symbols"> <t>theFragment</li> <li> <t>otherwise:</t> <ul spacing="normal"> <li>the fragment senderMUST<bcp14>MUST</bcp14> send SCHC Fragment messages containing all the tiles that are reported missing in the SCHCACK.</t> <t>theACK.</li> <li>the fragment senderMUST<bcp14>MUST</bcp14> then send either the All-1 SCHC Fragment or a SCHC ACK REQ with the W field corresponding to the lastwindow.</t> </list></t> </list></t> </list></t> </list></t>window.</li> </ul> </li> </ul> </li> </ul> </li> </ul> </li> <li> <t>otherwise, the fragmentsender <list style="symbols"> <t>MUSTsender:</t> <ul spacing="normal"> <li><bcp14>MUST</bcp14> send SCHC Fragment messages containing the tiles that are reported missing in the SCHCACK</t> <t>thenACK.</li> <li>then, itMAY<bcp14>MAY</bcp14> send a SCHC ACK REQ with the W field corresponding to the lastwindow</t> </list></t> </list></t>window.</li> </ul> </li> </ul> <t>See <xreftarget="Fig-ACKonerrorSnd"/>target="Fig-ACKonerrorSnd" format="default"/> for one among several possible examples of a Finite State Machine implementing a sender behavior obeying this specification.</t> </section> <section anchor="ACK-on-Error-receiver"title="Receiver behavior">numbered="true" toc="default"> <name>Receiver Behavior</name> <t>On receiving a SCHC Fragment with aRule IDRuleID and DTag pair not being processed at thattime</t> <t><list style="symbols"> <t>thetime:</t> <ul spacing="normal"> <li>the receiverSHOULD<bcp14>SHOULD</bcp14> check if the DTag value has not recently been used for thatRule IDRuleID value, thereby ensuring that the received SCHC Fragment is not a remnant of a prior fragmented SCHC Packet transmission. The initial value of the Inactivity Timer is theRECOMMENDED<bcp14>RECOMMENDED</bcp14> lifetime for the DTag value at the receiver. If the SCHC Fragment is determined to be such a remnant, the receiverMAY<bcp14>MAY</bcp14> silently ignore it and discardit.</t> <t>theit.</li> <li>the receiverMUST<bcp14>MUST</bcp14> start a process to assemble a new SCHC Packet with thatRule IDRuleID and DTag value pair. The receiverMUST<bcp14>MUST</bcp14> start an Inactivity Timer for thatRule IDRuleID and DTag value pair. ItMUST<bcp14>MUST</bcp14> initialize an Attempts counter to 0 for thatRule IDRuleID and DTag value pair. If the receiver is under-resourced to do this, itMUST<bcp14>MUST</bcp14> respond to the sender with a SCHCReceiver Abort.</t> </list></t>Receiver-Abort.</li> </ul> <t>On reception of any SCHC F/R message for the RuleID and DTag pair being processed, the receiverMUST<bcp14>MUST</bcp14> reset the Inactivity Timer pertaining to that RuleID and DTag pair.</t> <t>All message receptions being discussed in the rest of this section are to be understood as“matching"matching the RuleID and DTag pair beingprocessed”,processed", even if not spelled out, for brevity.</t> <t>On receiving a SCHC Fragment message, the receiver determines what tiles were received, based on the payload length and on the W and FCN fields of the SCHC Fragment.</t><t><list style="symbols"> <t>if<ul spacing="normal"> <li>if the FCN is All-1, if a Payload is present, the full SCHC Fragment PayloadMUST<bcp14>MUST</bcp14> be assembled including the padding bits. This is because the size of the last tile is not known by thereceiver, thereforereceiver; therefore, padding bits are indistinguishable from the tile data bits, at this stage. They will be removed by the SCHC C/D sublayer. If the size of the SCHC Fragment Payload exceeds or equals the size of one regular tile plus the size of an L2 Word, thisSHOULD<bcp14>SHOULD</bcp14> raise an errorflag.</t>flag.</li> <li> <t>otherwise, tilesMUST<bcp14>MUST</bcp14> be assembled based on the a priori known tile size.<list style="symbols"> <t>If</t> <ul spacing="normal"> <li>If allowed by the Profile, the end of the payloadMAY<bcp14>MAY</bcp14> contain the last tile, which may be shorter. Padding bits are indistinguishable from the tile data bits, at thisstage.</t> <t>thestage.</li> <li>The payload may contain the penultimate tile that, if allowed by the Profile,MAY<bcp14>MAY</bcp14> be exactly one L2 Word shorter than the regular tilesize.</t>size.</li> <li> <t>Otherwise, padding bitsMUST<bcp14>MUST</bcp14> be discarded.The latterThis is possiblebecause <list style="symbols"> <t>thebecause:</t> <ul spacing="normal"> <li>the size of the tiles is known apriori,</t> <t>tilespriori,</li> <li>tiles are larger than an L2Word</t> <t>paddingWord, and</li> <li>padding bits are always strictly less than an L2Word</t> </list></t> </list></t> </list></t>Word.</li> </ul> </li> </ul> </li> </ul> <t>On receiving a SCHC ACK REQ or an All-1 SCHCFragment,</t> <t><list style="symbols"> <t>ifFragment:</t> <ul spacing="normal"> <li>if the receiver knows of any windows with missing tiles for the packet being reassembled, itMUST<bcp14>MUST</bcp14> return a SCHC ACK for the lowest-numbered suchwindow,</t> <t>otherwise, <list style="symbols"> <t>ifwindow:</li> <li> <t>otherwise: </t> <ul spacing="normal"> <li>if it has received at least one tile, itMUST<bcp14>MUST</bcp14> return a SCHC ACK for the highest-numbered window it currently has tilesfor</t> <t>otherwisefor,</li> <li>otherwise, itMUST<bcp14>MUST</bcp14> return a SCHC ACK for window numbered0</t> </list></t> </list></t>0.</li> </ul> </li> </ul> <t>A ProfileMAY<bcp14>MAY</bcp14> specify other times and circumstances at which a receiver sends a SCHC ACK, and which window the SCHC ACK reports about in these circumstances.</t> <t>Upon sending a SCHC ACK, the receiverMUST<bcp14>MUST</bcp14> increase the Attempts counter.</t> <t>After receiving an All-1 SCHC Fragment, a receiverMUST<bcp14>MUST</bcp14> check the integrity of the reassembled SCHC Packet at least every time it prepares for sending a SCHC ACK for the last window.</t> <t>Upon receiving a SCHC Sender-Abort, the receiverMAY<bcp14>MAY</bcp14> exit with an error condition.</t> <t>Upon expiration of the Inactivity Timer, the receiverMUST<bcp14>MUST</bcp14> send a SCHCReceiver-AbortReceiver-Abort, and itMAY<bcp14>MAY</bcp14> exit with an error condition.</t> <t>On the Attempts counter exceeding MAX_ACK_REQUESTS, the receiverMUST<bcp14>MUST</bcp14> send a SCHCReceiver-AbortReceiver-Abort, and itMAY<bcp14>MAY</bcp14> exit with an error condition.</t> <t>Reassembly of the SCHC Packet concludeswhen</t> <t><list style="symbols"> <t>awhen:</t> <ul spacing="normal"> <li>a Sender-Abort has beenreceived</t> <t>or thereceived, or</li> <li>the Inactivity Timer hasexpired</t> <t>or theexpired, or</li> <li>the Attempts counter has exceededMAX_ACK_REQUESTS</t> <t>or when atMAX_ACK_REQUESTS, or</li> <li>at least an All-1 SCHC Fragment has been received and integrity checking of the reassembled SCHC Packet issuccessful.</t> </list></t>successful.</li> </ul> <t>See <xreftarget="Fig-ACKonerrorRcv"/>target="Fig-ACKonerrorRcv" format="default"/> for one among several possible examples of a Finite State Machine implementing a receiver behavior obeying thisspecification, and thatspecification. The example provided is meant to match the sender Finite State Machine of <xreftarget="Fig-ACKonerrorSnd"/>.</t>target="Fig-ACKonerrorSnd" format="default"/>.</t> </section> </section> </section> </section> <section anchor="Padding"title="Padding management">numbered="true" toc="default"> <name>Padding Management</name> <t>SCHC C/D and SCHC F/R operate on bits, not bytes. SCHC itself does not have any alignment prerequisite. The size of SCHC Packets can be any number of bits.</t> <t>If thelayer below SCHCL2 constrains the payload to align tosome boundary, called L2 Wordscoarser boundaries (for example, bytes), the SCHC messagesMUST<bcp14>MUST</bcp14> be padded. When padding occurs, the number of appended bitsMUST<bcp14>MUST</bcp14> be strictly less than the L2 Word size.</t> <t>If a SCHC Packet is sent unfragmented (see <xreftarget="Fig-Operations-Pad"/>),target="Fig-Operations-Pad" format="default"/>), it is padded as needed for transmission.</t> <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> <figuretitle="SCHC operations, including paddinganchor="Fig-Operations-Pad"> <name>SCHC Operations, Including Padding asneeded" anchor="Fig-Operations-Pad"><artwork><![CDATA[Needed</name> <artwork name="" type="" align="left" alt=""><![CDATA[ A packet (e.g., an IPv6 packet) | ^ (padding bits v | dropped) +------------------+ +--------------------+ | SCHC Compression | | SCHC Decompression | +------------------+ +--------------------+ | ^ | If nofragmentationfragmentation, | +---- SCHC Packet + padding as needed ----->| | | (integrity v | checked) +--------------------+ +-----------------+ | SCHC Fragmentation | | SCHC Reassembly | +--------------------+ +-----------------+ | ^ | ^ | | | | | +--- SCHC ACK + padding as needed --+ | | | +------- SCHC Fragments + padding as needed---------+ SenderReceiver ]]></artwork></figure>Receiver]]></artwork> </figure> <t>Each ProfileMUST<bcp14>MUST</bcp14> specify the size of the L2 Word. The L2 Word might actually be a single bit, in which case no padding will take place at all.</t> <t>A ProfileMAY<bcp14>MUST</bcp14> define the value of the paddingbits.bits if the L2 Word is wider than a single bit. TheRECOMMENDED<bcp14>RECOMMENDED</bcp14> value is 0.</t> </section> <section anchor="schc-compression-for-ipv6-and-udp-headers"title="SCHCnumbered="true" toc="default"> <name>SCHC Compression for IPv6 and UDPheaders">Headers</name> <t>This section lists the IPv6 and UDP header fields and describes how they can be compressed. An example of a set of Rules for UDP/IPv6 header compression is provided in <xreftarget="compressIPv6"/>.</t>target="compressIPv6" format="default"/>.</t> <section anchor="ipv6-version-field"title="IPv6 version field">numbered="true" toc="default"> <name>IPv6 Version Field</name> <t>The IPv6 version field is labeled by the protocol parser as being the“version”"version" field of the IPv6 protocol. Therefore, it only exists for IPv6 packets. In the Rule, TV is set to 6, MO to“ignore”"ignore" and CDA to“not-sent”.</t>"not-sent".</t> </section> <section anchor="ipv6-traffic-class-field"title="IPv6numbered="true" toc="default"> <name>IPv6 Trafficclass field">Class Field</name> <t>If theDiffServDiffserv field does not vary and is known by both sides, the Field Descriptor in the RuleSHOULD<bcp14>SHOULD</bcp14> contain a TV with this well-known value, an“equal” MO"equal" MO, and a“not-sent”"not-sent" CDA.</t> <t>Otherwise (e.g., ECN bits are to be transmitted), two possibilities can be considered depending on the variability of the value:</t><t><list style="symbols"> <t>One<ul spacing="normal"> <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”"ignore", and CDA is set to“value-sent”.</t>"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 stable known upper part, MO is set toMSB(x)MSB(x), and CDA to LSB.<vspace blankLines='1'/></t> <t> ECN functionality depends on both bits of the ECN field, which are the 2 LSBs of thisfield, hencefield; hence, sending only a single LSB of this field isNOT RECOMMENDED.</t> </list></t><bcp14>NOT RECOMMENDED</bcp14>.</t> </li> </ul> </section> <section anchor="flow-label-field"title="Flow label field">numbered="true" toc="default"> <name>Flow Label Field</name> <t>If the flow label is not set,i.e.i.e., its value is zero, the Field Descriptor in the RuleSHOULD<bcp14>SHOULD</bcp14> contain a TV set to zero, an“equal” MO"equal" MO, and a“not-sent”"not-sent" CDA.</t> <t>If the flow label is set to apseudo-randompseudorandom value according to <xreftarget="RFC6437"/>,target="RFC6437" format="default"/>, in the Rule, TV is not set to any particular value, MO is set to“ignore”"ignore", and CDA is set to“value-sent”.</t>"value-sent".</t> <t>If the flow label is set according to some prior agreement,i.e.i.e., by a flow state establishment method as allowed by <xreftarget="RFC6437"/>,target="RFC6437" format="default"/>, the Field Descriptor in the RuleSHOULD<bcp14>SHOULD</bcp14> contain a TV with this agreed-upon value, an“equal” MO"equal" MO, and a“not-sent”"not-sent" CDA.</t> </section> <section anchor="payload-length-field"title="Payloadnumbered="true" toc="default"> <name>Payload Lengthfield">Field</name> <t>This field can be elided for the transmission on theLPWAN network.LPWAN. The SCHC C/D recomputes the original payload length value. In the Field Descriptor, TV is not set, MO is set to“ignore”"ignore", and CDA is“compute-*”.</t>"compute-*".</t> </section> <section anchor="next-header-field"title="Nextnumbered="true" toc="default"> <name>Next Headerfield">Field</name> <t>If the Next Header field does not vary and is known by both sides, the Field Descriptor in the RuleSHOULD<bcp14>SHOULD</bcp14> contain a TV with this Next Header value, the MOSHOULD<bcp14>SHOULD</bcp14> be“equal”"equal", and the CDASHOULD<bcp14>SHOULD</bcp14> be“not-sent”.</t>"not-sent".</t> <t>Otherwise, TV is not set in the Field Descriptor, MO is set to“ignore”"ignore", and CDA is set to“value-sent”."value-sent". Alternatively, a matching-listMAY<bcp14>MAY</bcp14> also be used.</t> </section> <section anchor="hop-limit-field"title="Hopnumbered="true" toc="default"> <name>Hop Limitfield">Field</name> <t>The field behavior for this field is different foruplink (Up)Uplink anddownlink (Dw).Downlink. InUp,Uplink, since there is no IP forwarding between the Dev and the SCHC C/D, the value is relatively constant. On the other hand, theDwDownlink value depends on Internet routing and can change more frequently. TheDirection Indicator (DI)DI can be used to distinguish both directions:</t><t><list style="symbols"> <t>in the Up,<ul spacing="normal"> <li>in an Up Field Descriptor, elide the field: the TVin the Field Descriptoris set to the known constant value, the MO is set to“equal”"equal" and the CDA is set to“not-sent”.</t> <t>in the Dw,"not-sent".</li> <li>in a Dw Field Descriptor, the Hop Limit is elided for transmission and forced to 1 at the receiver, by setting TV to 1, MO to“ignore”"ignore" and CDA to“not-sent”."not-sent". This prevents any furtherforwarding.</t> </list></t>forwarding.</li> </ul> </section> <section anchor="ipv6-addresses-fields"title="IPv6 addresses fields">numbered="true" toc="default"> <name>IPv6 Addresses Fields</name> <t>As in 6LoWPAN <xreftarget="RFC4944"/>,target="RFC4944" format="default"/>, IPv6 addresses are split into two64-bit long64-bit-long fields; one for the prefix and one for the Interface Identifier (IID). These fieldsSHOULD<bcp14>SHOULD</bcp14> be compressed. To allow for a single Rule being used for both directions, these values are identified by their role (Dev or App) and not by their position in the header (source or destination).</t> <section anchor="ipv6-source-and-destination-prefixes"title="IPv6 sourcenumbered="true" toc="default"> <name>IPv6 Source anddestination prefixes">Destination Prefixes</name> <t>Both endsMUST<bcp14>MUST</bcp14> be configured with the appropriate prefixes. For a specific flow, the source and destination prefixes can be unique and stored in the Context. In that case, the TV for the source and destination prefixes contain the values, the MO is set to“equal”"equal" and the CDA is set to“not-sent”.</t>"not-sent".</t> <t>If the Rule is intended to compress packets with different prefix values, match-mappingSHOULD<bcp14>SHOULD</bcp14> be used. The different prefixes are listed in the TV, the MO is set to“match-mapping”"match-mapping" and the CDA is set to“mapping-sent”."mapping-sent". See <xreftarget="Fig-fields"/>.</t>target="Fig-fields" format="default"/>.</t> <t>Otherwise, the TV is not set, the MO is set to“ignore”"ignore", and the CDA is set to“value-sent”.</t>"value-sent".</t> </section> <section anchor="ipv6-source-and-destination-iid"title="IPv6 sourcenumbered="true" toc="default"> <name>IPv6 Source anddestination IID">Destination IID</name> <t>If the Dev or App IID are based on anLPWANL2 address, then the IID can be reconstructed with information coming from theLPWANL2 header. In that case, the TV is not set, the MO is set to“ignore”"ignore" and the CDA is set to“DevIID”"DevIID" or“AppIID”."AppIID". On LPWAN technologies where the frames carry a single identifier (corresponding to theDev.),Dev), AppIID cannot be used.</t> <t>As described in <xreftarget="RFC8065"/>,target="RFC8065" format="default"/>, it may be undesirable to build the Dev IPv6 IID out of the Dev address. Another static value is used instead. In that case, the TV contains the static value, the MO operator is set to“equal”"equal" and the CDA is set to“not-sent”.</t>"not-sent".</t> <t>If several IIDs are possible, then the TV contains the list of possible IIDs, the MO is set to“match-mapping”"match-mapping" and the CDA is set to“mapping-sent”.</t>"mapping-sent".</t> <t>It may also happen that the IID variability only expresses itself on a few bytes. In that case, the TV is set to the stable part of the IID, the MO is set to“MSB”"MSB" and the CDA is set to“LSB”.</t>"LSB".</t> <t>Finally, the IID can be sent in its entirety on theLPWAN.L2. In that case, the TV is not set, the MO is set to“ignore”"ignore", and the CDA is set to“value-sent”.</t>"value-sent".</t> </section> </section> <section anchor="ipv6-extension-headers"title="IPv6 extension headers">numbered="true" toc="default"> <name>IPv6 Extension Headers</name> <t>This document does not provide recommendations on how to compress IPv6 extension headers.</t> </section> <section anchor="udp-source-and-destination-ports"title="UDP sourcenumbered="true" toc="default"> <name>UDP Source anddestination ports">Destination Ports</name> <t>To allow for a single Rule being used for both directions, the UDP port values are identified by their role (Dev or App) and not by their position in the header (source or destination). The SCHC C/DMUST<bcp14>MUST</bcp14> be aware of the traffic direction (Uplink, Downlink) to select the appropriate field. The following Rules apply for Dev and App port numbers.</t> <t>If both ends know the port number, it can be elided. The TV contains the port number, the MO is set to“equal”"equal", and the CDA is set to“not-sent”.</t>"not-sent".</t> <t>If the port variation is on few bits, the TV contains the stable part of the port number, the MO is set to“MSB”"MSB", and the CDA is set to“LSB”.</t>"LSB".</t> <t>If some well-known values are used, the TV can contain the list of these values, the MO is set to“match-mapping”"match-mapping", and the CDA is set to“mapping-sent”.</t> <t>Otherwise"mapping-sent".</t> <t>Otherwise, the port numbers are sent over theLPWAN.L2. The TV is not set, the MO is set to“ignore”"ignore" and the CDA is set to“value-sent”.</t>"value-sent".</t> </section> <section anchor="udp-length-field"title="UDP length field">numbered="true" toc="default"> <name>UDP Length Field</name> <t>The parser MUST NOT label this field unless the UDPlength can be computedLength value matches the Payload Length value from thereceived data.IPv6 header. The TV is not set, the MO is set to“ignore”"ignore", and the CDA is set to“compute-*”.</t>"compute-*”.</t> </section> <section anchor="UDPchecksum"title="UDPnumbered="true" toc="default"> <name>UDP Checksumfield">Field</name> <t>The UDP checksum operation is mandatory with IPv6 for mostpacketspackets, but there are exceptions <xreftarget="RFC8200"></xref>.</t>target="RFC8200" format="default"/>.</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 sending and/or receiving. <xreftarget="RFC8200"></xref>target="RFC8200" format="default"/> requires any node implementing zero-checksum mode to follow the requirements specified in“Applicability"Applicability Statement for the Use of IPv6 UDP Datagrams with ZeroChecksums”Checksums" <xreftarget="RFC6936"></xref>.</t>target="RFC6936" format="default"/>.</t> <t>6LoWPAN Header Compression <xreftarget="RFC6282"></xref>target="RFC6282" format="default"/> also specifies that a UDP checksum can be elided by the compressor andre-computedrecomputed by the decompressor when an upper layer guarantees the integrity of the UDP payload and pseudo-header. A specific example of this is when a message integrity check protects the compressed message between the compressor that elides the UDP checksum and the decompressor that computes it, with a strength that is identical or better to the UDP checksum.</t> <t>Similarly, a SCHC compressorMAY<bcp14>MAY</bcp14> elide the UDP checksum when another layer guarantees at least equal integrity protection for the UDP payload and the pseudo-header. In this case, the TV is not set, the MO is set to“ignore”"ignore", and the CDA is set to“compute-*”.</t>"compute-*".</t> <t>In particular, when SCHC fragmentation is used, a fragmentation RCS of 2 bytes or more provides equal or better protection than the UDP checksum; in that case, if the compressor is collocated with the fragmentation point and the decompressor is collocated with the packet reassembly point, and if the SCHC Packet is fragmented even when it would fit unfragmented in the L2 MTU, then the compressorMAY<bcp14>MAY</bcp14> verify and then elide the UDP checksum. Whether and when the UDP Checksum is elided is to be specified in the Profile.</t> <t>Since the compression happens before the fragmentation, implementers should understand the risks when dealing with unprotected data below the transport layer and take special care when manipulating that data.</t> <t>In other cases, the checksumSHOULD<bcp14>SHOULD</bcp14> be explicitly sent. The TV is not set, the MO is set to“ignore”"ignore" and the CDA is set to“value-sent”.</t>"value-sent".</t> </section> </section> <section anchor="iana-considerations"title="IANA Considerations">numbered="true" toc="default"> <name>IANA Considerations</name> <t>This document has norequest to IANA.</t>IANA actions.</t> </section> <section anchor="SecConsiderations"title="Security considerations">numbered="true" toc="default"> <name>Security Considerations</name> <t>As explained in <xreftarget="Overview"/>,target="Overview" format="default"/>, SCHC is expected to be implemented on top of LPWAN technologies, which are expected to implement security measures.</t> <t>In this section, we analyze the potential security threats that could be introduced into an LPWAN by adding the SCHC functionalities.</t> <section anchor="security-considerations-for-schc-compressiondecompression"title="Security considerationsnumbered="true" toc="default"> <name>Security Considerations for SCHCCompression/Decompression">Compression/Decompression</name> <section anchor="forged-schc-packet"title="Forgednumbered="true" toc="default"> <name>Forged SCHCPacket"> <t>Let’sPacket</name> <t>Let's assume that an attacker is able to send a forged SCHC Packet to a SCHCDecompressor.</t> <t>Let’sdecompressor.</t> <t>Let's first consider the case where theRule IDRuleID contained in that forged SCHC Packet does not correspond to a Rule allocated in the Rule table. An implementation should detect that theRule IDRuleID is invalid and should silently drop the offending SCHC Packet.</t><t>Let’s<t>Let's now consider that theRule IDRuleID corresponds to a Rule in the table. With the CDAs defined in this document, the reconstructed packetisis, atmostmost, a constant number of bits bigger than the SCHC Packet that was received. This assumes that the compute-* decompression actions produce a bounded number of bits, irrespective of the incoming SCHC Packet. This property is true for IPv6 Length, UDPLengthLength, and UDP Checksum, for which the compute-* CDA is recommended by this document.</t> <t>As a consequence, SCHCDecompressiondecompression does not amplify attacks, beyond adding a bounded number of bits to the SCHC Packet received. This bound is determined by the Rule stored in the receiving device.</t> <t>As a general safety measure, a SCHCDecompressordecompressor should neverre-constructreconstruct a packet larger than MAX_PACKET_SIZE (defined in a Profile, with 1500 bytes as generic default).</t> </section> <section anchor="compressed-packet-size-as-a-side-channel-to-guess-a-secret-token"title="Compressed packet sizenumbered="true" toc="default"> <name>Compressed Packet Size as aside channelSide Channel toguessGuess asecret token">Secret Token</name> <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 resulting compressed packet size. The observed size potentially reflects correlation 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, SCHCCompressioncompression takes place header field by header field, with the SCHC Packet being a mere concatenation of the compression residues of each of the individual field. Any correlation between header fields does not result in a change in the SCHC Packet size compressed under the same Rule.</t> <t>If SCHC C/D is used to compress packets that include a secret information field, such as a token, 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. This is achievedbyby, e.g., sending this field in extenso with the“ignore”"ignore" MO and the“value-sent”"value-sent" CDA. This recommendation is disputable if it is ascertained that the Rule set itself will remain secret.</t> </section> <section anchor="decompressed-packet-different-from-the-original-packet"title="Decompressed packet differentnumbered="true" toc="default"> <name>Decompressed Packet Different from theoriginal packet">Original Packet</name> <t>As explained in <xreftarget="PProcessing"/>,target="PProcessing" format="default"/>, using 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 original packet. Likewise, as stated in <xreftarget="NotSentCDA"/>,target="NotSentCDA" format="default"/>, using an“ignore”"ignore" MO together with a“not-sent”"not-sent" CDA will 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 the packet may or may not be functionallysignificant or not.</t>significant.</t> <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 decompression, these situations may result in the packet being considered corrupt and dropped.</t> </section> </section> <section anchor="security-considerations-for-schc-fragmentationreassembly"title="Security considerationsnumbered="true" toc="default"> <name>Security Considerations for SCHCFragmentation/Reassembly">Fragmentation/Reassembly</name> <section anchor="buffer-reservation-attack"title="Buffer reservation attack"> <t>Let’snumbered="true" toc="default"> <name>Buffer Reservation Attack</name> <t>Let's assume that an attacker is able to send a forged SCHC Fragment to a SCHCReassembler.</t>reassembler.</t> <t>A node can perform a buffer reservation attack: the receiver will reserve buffer space for the SCHC Packet. If the implementation has only one buffer, other incoming fragmented SCHC Packets will be dropped while the reassembly buffer is occupied during the reassembly timeout. Once that timeout expires, the attacker can repeat the same procedure, and iterate,thusthus, creating adenial of servicedenial-of-service attack. An implementation may have multiple reassembly buffers. The cost to mount this attack is linear with the number of buffers at the target node. Better, the cost for an attacker can be increased if individual fragments of multiple SCHC Packets can be stored in the reassembly buffer. The finer grained the reassembly buffer(downto(down to the smallest tile size), the higher the cost of the attack. If buffer overload does occur, a smart receiver could selectively discard SCHC Packets being reassembled based on the sender behavior, which may help identify which SCHC Fragments have been sent by the attacker. Another mildcounter-measurecountermeasure is for the target to abort the fragmentation/reassembly session as early as it detects a non-identical SCHC Fragment duplicate, anticipating for an eventual corrupt SCHC Packet, so as to save the sender the hassle of sending the rest of the fragments for this SCHC Packet.</t> </section> <section anchor="corrupt-fragment-attack"title="Corruptnumbered="true" toc="default"> <name>Corrupt Fragmentattack"> <t>Let’sAttack</name> <t>Let's assume that an attacker is able to send a forged SCHC Fragment to a SCHCReassembler.reassembler. The malicious node is additionally assumed to be able to hear an incoming communication destined to the target node.</t> <t>It can then send a forged SCHC Fragment that looks like it belongs to a SCHC Packet already being reassembled at the target node. This can cause the SCHC Packet to be considered corrupt and to be dropped by the receiver. The amplification happens here by a single spoofed SCHC Fragment rendering a full sequence oflegitlegitimate SCHC Fragments useless. If the target uses ACK-Always or ACK-on-Error mode, such a malicious node can also interfere with the acknowledgement and repetition algorithm of SCHC F/R. A single spoofed ACK, with allbitmapBitmap bits set to 0, will trigger the repetition of WINDOW_SIZE tiles. This protocol loop amplification depletes the energy source of the target node and consumes the channel bandwidth. 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. These consequences should be borne in mind when defining profiles for SCHC over specific LPWAN technologies.</t> </section> <section anchor="fragmentation-as-a-way-to-bypass-network-inspection"title="Fragmentationnumbered="true" toc="default"> <name>Fragmentation as awayWay tobypassBypass NetworkInspection">Inspection</name> <t>Fragmentation is known for potentially allowing one to force through a Network Inspection device (e.g., firewall) packets that would be rejected if unfragmented. This involves sending overlapping fragments to rewrite fields whose initial value 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 Inspection device is expected to sit. As described in <xreftarget="FunctionalMapping"/>,target="FunctionalMapping" format="default"/>, even if the SCHC F/R on the NetworkinfrastructureInfrastructure side is located in the Internet, a tunnel is to be established between it and the NGW.</t> </section> <section anchor="privacy-issues-associated-with-schc-header-fields"title="Privacy issues associatednumbered="true" toc="default"> <name>Privacy Issues Associated with SCHCheader fields">Header Fields</name> <t>SCHC F/R allocates a DTag value to fragments belonging to the same SCHC Packet. Concerns were raised that, if DTag is a wide counter that is incremented in a predictable fashion for each new fragmented SCHC Packet, it might lead to a privacy issue, such as enabling tracking of a device across LPWANs.</t> <t>However, SCHC F/R is expected to be used over exactly one LPWAN link. As described in <xreftarget="FunctionalMapping"/>,target="FunctionalMapping" format="default"/>, even if the SCHC F/R on the NetworkinfrastructureInfrastructure side islocated 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> </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 carried out during his stay as a visiting scholar at the Computer Laboratory of the University of Cambridge.</t> </section> </middle> <back> <references title='Normative References'> <reference anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'> <front> <title>Key words for use in RFCs to Indicate Requirement Levels</title> <author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author> <date year='1997' month='March' /> <abstract><t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract> </front> <seriesInfo name='BCP' value='14'/> <seriesInfo name='RFC' value='2119'/> <seriesInfo name='DOI' value='10.17487/RFC2119'/> </reference> <reference anchor="RFC6936" target='https://www.rfc-editor.org/info/rfc6936'> <front> <title>Applicability Statement for the Use of IPv6 UDP Datagrams with Zero Checksums</title> <author initials='G.' surname='Fairhurst' fullname='G. Fairhurst'><organization /></author> <author initials='M.' surname='Westerlund' fullname='M. Westerlund'><organization /></author> <date year='2013' month='April' /> <abstract><t>This document provides an applicability statement for the use of UDP transport checksums with IPv6. It defines recommendations and requirements for the use of IPv6 UDP datagrams with a zero UDP checksum. It describes the issues and design principles that need to be considered when UDP is used with IPv6 to support tunnel encapsulations, and it examines the role of the IPv6 UDP transport checksum. The document also identifies issues and constraints for deployment 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 RFC 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 /></author> <date year='2017' month='May' /> <abstract><t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t></abstract> </front> <seriesInfo name='BCP' value='14'/> <seriesInfo name='RFC' value='8174'/> <seriesInfo name='DOI' value='10.17487/RFC8174'/> </reference> <reference anchor="RFC8200" target='https://www.rfc-editor.org/info/rfc8200'> <front> <title>Internet Protocol, Version 6 (IPv6) Specification</title> <author initials='S.' surname='Deering' fullname='S. Deering'><organization /></author> <author initials='R.' surname='Hinden' fullname='R. Hinden'><organization /></author> <date year='2017' month='July' /> <abstract><t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t></abstract> </front> <seriesInfo name='STD' value='86'/> <seriesInfo name='RFC' value='8200'/> <seriesInfo name='DOI' value='10.17487/RFC8200'/> </reference> <reference anchor="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'><organization /></author> <date year='2018' month='May' /> <abstract><t>Low-Power Wide Area Networks (LPWANs) are wireless technologies with characteristics such as large coverage areas, low bandwidth, possibly very small packet and application-layer data sizes, and long battery life operation. This memo is an informational overview of the set of LPWAN technologies being considered in the IETF and of the gaps that exist between the needs of those technologies and the goal of running IP in LPWANs.</t></abstract> </front> <seriesInfo name='RFC' value='8376'/> <seriesInfo name='DOI' value='10.17487/RFC8376'/> </reference> </references> <references 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'><organization /></author> <author initials='N.' surname='Kushalnagar' fullname='N. Kushalnagar'><organization /></author> <author initials='J.' surname='Hui' fullname='J. Hui'><organization /></author> <author initials='D.' surname='Culler' fullname='D. Culler'><organization /></author> <date year='2007' month='September' /> <abstract><t>This document describes the frame format for transmission of IPv6 packets and the method of forming IPv6 link-local addresses and statelessly autoconfigured addresses on IEEE 802.15.4 networks. Additional specifications include a simple header compression scheme using shared context and provisions for packet 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 operate efficiently and robustly over various link technologies with different characteristics.</t><t>The ROHC framework, along with a set of compression profiles, was initially defined in RFC 3095. To improve and simplify the ROHC specifications, this document explicitly defines the ROHC framework and the profile for uncompressed separately. More specifically, the definition of the framework does not modify or update the definition of the framework specified by RFC 3095.</t><t>This specification obsoletes RFC 4995. It fixes one interoperability issue that 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'><organization /></author> <author initials='P.' surname='Thubert' fullname='P. Thubert'><organization /></author> <date year='2011' month='September' /> <abstract><t>This document updates RFC 4944, "Transmission of IPv6 Packets over IEEE 802.15.4 Networks". This document specifies an IPv6 header compression format for IPv6 packet delivery in Low Power Wireless Personal Area Networks (6LoWPANs). The compression format relies on shared context to allow compression of arbitrary prefixes. How the information is maintained in that shared context is out of scope. This document specifies compression of multicast addresses and a framework for compressing next headers. UDP header compression is specified 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 /></author> <author initials='B.' surname='Carpenter' fullname='B. Carpenter'><organization /></author> <author initials='S.' surname='Jiang' fullname='S. Jiang'><organization /></author> <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 requirements for IPv6 nodes labeling flows, IPv6 nodes forwarding labeled packets, and flow state establishment methods. Even when mentioned as examples of possible uses of the flow labeling, more detailed requirements for specific use cases are out of the scope for this document.</t><t>The usage of the Flow Label field enables efficient IPv6 flow classification based only on IPv6 main header fields 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 /></author> <date year='2014' month='February' /> <abstract><t>The IPv6 addressing architecture includes a unicast interface identifier 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 an 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 the Universal and Group bits of an IEEE link-layer address are mapped into an IPv6 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> <title>Privacy Considerations for IPv6 Adaptation-Layer Mechanisms</title> <author initials='D.' surname='Thaler' fullname='D. Thaler'><organization /></author> <date year='2017' month='February' /> <abstract><t>This document discusses howlocated in the Internet, anumber of privacy threats applytunnel is totechnologies designed for IPv6 over various link-layer protocols, andbe established between it and the NGW. Therefore, assuming the tunnel providesadvice to protocol designers on how to address such threats in adaptation-layer specifications for IPv6confidentiality, neither the DTag field nor any other SCHC-introduced field is visible oversuch links.</t></abstract> </front> <seriesInfo name='RFC' value='8065'/> <seriesInfo name='DOI' value='10.17487/RFC8065'/> </reference>the Internet.</t> </section> </section> </section> </middle> <back> <references> <name>References</name> <references> <name>Normative References</name> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6936.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8376.xml"/> </references> <references> <name>Informative References</name> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4944.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5795.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6282.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6437.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7136.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8065.xml"/> <reference anchor="ETHERNET">target="https://ieeexplore.ieee.org/document/6419735" quoteTitle="true" derivedAnchor="IEEE-802.3-2012"> <front> <title>IEEE Standard for Ethernet</title><author > <organization></organization><seriesInfo name="DOI" value="10.1109/IEEESTD.2012.6419735"/> <seriesInfo name="IEEE Standard" value="802.3-2012"/> <author> <organization showOnFrontPage="true">IEEE</organization> </author> <dateyear="n.d."/>month="December" year="2012"/> </front><seriesInfo name="IEEE" value="standard"/> <seriesInfo name="DOI" value="10.1109/ieeestd.2018.8457469"/></reference> </references> </references> <section anchor="compressIPv6"title="Compression Examples">numbered="true" toc="default"> <name>Compression Examples</name> <t>This section gives some scenarios of the compression mechanism for IPv6/UDP. The goal is to illustrate the behavior of SCHC.</t> <t>The mechanisms defined in this document can be applied to a Dev that embeds some applications running over CoAP. In this example, three flows are considered. The first flow is for the device management based on CoAP using Link Local IPv6 addresses and UDP ports 123 and 124 for Dev and App, respectively. The second flowwill beis a CoAP server for measurements done by the Dev (using ports 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 destination IPv6 address prefix is gamma::1/64.</t> <t><xreftarget="FigStack"/>target="FigStack" format="default"/> presents the protocol stack. IPv6 and UDP are represented with dotted lines since these protocols are compressed on the radio link.</t> <figuretitle="Simplifiedanchor="FigStack"> <name>Simplified Protocol Stack forLP-WAN" anchor="FigStack"><artwork><![CDATA[LP-WAN</name> <artwork name="" type="" align="left" alt=""><![CDATA[ Management Data +----------+---------+---------+ | CoAP | CoAP | legacy | +----||----+---||----+---||----+ . UDP . UDP | UDP | ................................ . IPv6 . IPv6 . IPv6 . +------------------------------+ | SCHC Header compression | | and fragmentation | +------------------------------+ | LPWAN L2 technologies | +------------------------------+ Dev orNGW ]]></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>NGW]]></artwork> </figure> <figuretitle="Context Rules" anchor="Fig-fields"><artwork><![CDATA[anchor="Fig-fields"> <name>Context Rules - Rule 0Specialand RuleID1</name> <artwork name="" type="" align="left" alt=""><![CDATA[ Rule 0 Special RuleID used to tag an uncompressed UDP/IPV6 packet. Rule 1 +----------------+--+--+--+---------+--------+------------++------+ |FieldFID |FL|FP|DI|ValueTV |MatchMO |Comp Decomp||CDA || Sent | | | | | | |Opera.|Action||[bits]| +----------------+--+--+--+---------+---------------------++------+ |IPv6 Version |4 |1 |Bi|6 | ignore | not-sent || | |IPv6DiffServDiffserv |8 |1 |Bi|0 | equal | not-sent || | |IPv6 Flow Label |20|1 |Bi|0 | equal | not-sent || | |IPv6 Length |16|1 |Bi| | ignore | compute-* || | |IPv6 Next Header|8 |1 |Bi|17 | equal | not-sent || | |IPv6 Hop Limit |8 |1 |Bi|255 | ignore | not-sent || | |IPv6 DevPrefix |64|1 |Bi|FE80::/64| equal | not-sent || | |IPv6 DevIID |64|1 |Bi| | ignore | DevIID || | |IPv6 AppPrefix |64|1 |Bi|FE80::/64| equal | not-sent || | |IPv6 AppIID |64|1 |Bi|::1 | equal | not-sent || | +================+==+==+==+=========+========+============++======+ |UDP DevPort |16|1 |Bi|123 | equal | not-sent || | |UDP AppPort |16|1 |Bi|124 | equal | not-sent || | |UDP Length |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 +----------------+--+--+--+---------+--------+------------++------+ |FieldFID |FL|FP|DI|ValueTV |MatchMO |ActionCDA || Sent | | | | | | |Opera.|Action||[bits]| +----------------+--+--+--+---------+--------+------------++------+ |IPv6 Version |4 |1 |Bi|6 | ignore | not-sent || | |IPv6DiffServDiffserv |8 |1 |Bi|0 | equal | not-sent || | |IPv6 Flow Label |20|1 |Bi|0 | equal | not-sent || | |IPv6 Length |16|1 |Bi| | ignore | compute-* || | |IPv6 Next Header|8 |1 |Bi|17 | equal | not-sent || | |IPv6 Hop Limit |8 |1 |Bi|255 | ignore | not-sent || | |IPv6 DevPrefix |64|1 |Bi|[alpha/64, match- |mapping-sent|| 1 | | | | | |fe80::/64] mapping| || | |IPv6 DevIID |64|1 |Bi| | ignore | DevIID || | |IPv6 AppPrefix |64|1 |Bi|[beta/64,| match- |mapping-sent|| 2 | | | | | |alpha/64,| mapping| || | | | | | |fe80::64]| | || | |IPv6 AppIID |64|1 |Bi|::1000 | equal | not-sent || | +================+==+==+==+=========+========+============++======+ |UDP DevPort |16|1 |Bi|5683 | equal | not-sent || | |UDP AppPort |16|1 |Bi|5683 | equal | not-sent || | |UDP Length |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 +----------------+--+--+--+---------+--------+------------++------+ |FieldFID |FL|FP|DI|ValueTV |MatchMO |ActionCDA || Sent | | | | | | |Opera.|Action||[bits]| +----------------+--+--+--+---------+--------+------------++------+ |IPv6 Version |4 |1 |Bi|6 | ignore | not-sent || | |IPv6DiffServDiffserv |8 |1 |Bi|0 | equal | not-sent || | |IPv6 Flow Label |20|1 |Bi|0 | equal | not-sent || | |IPv6 Length |16|1 |Bi| | ignore | compute-* || | |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 |Dw| | ignore | value-sent || 8 | |IPv6 DevPrefix |64|1 |Bi|alpha/64 | equal | not-sent || | |IPv6 DevIID |64|1 |Bi| | ignore | DevIID || | |IPv6 AppPrefix |64|1 |Bi|gamma/64 | equal | not-sent || | |IPv6 AppIID |64|1 |Bi|::1000 | equal | not-sent || | +================+==+==+==+=========+========+============++======+ |UDP DevPort |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 checksum |16|1 |Bi| | ignore | compute-* || |+================+==+==+==+=========+========+============++======+ ]]></artwork></figure> <t><xref target="Fig-fields"/> describes a+================+==+==+==+=========+========+============++======+]]></artwork> </figure> <t>Figures <xref target="Fig-fields" format="counter"/> to <xref target="Fig-fields2" format="counter"/> describe an example of a Rule set.</t> <t>In this example, 0 was chosen as the specialRule IDRuleID that tags packets that cannot be compressed with any compression Rule.</t> <t>All the fields described in Rules 1-3 are present in the IPv6 and UDP headers. TheDevIID-DIDDevIID value isfound ininferred from the L2 header.</t> <t>Rules 2-3 use global addresses. The way the Dev learns the prefix is not in the scope of the document.</t> <t>Rule 3 compresses each port number to 4 bits.</t> </section> <section anchor="FragExamples"title="Fragmentation Examples">numbered="true" toc="default"> <name>Fragmentation Examples</name> <t>This section provides examples for the various fragment reliability modes specified in this document. In the drawings, Bitmaps are shown in their uncompressed form.</t> <t><xreftarget="Fig-Example-Unreliable"/>target="Fig-Example-Unreliable" format="default"/> illustrates the transmission in No-ACK mode of a SCHC Packet that needs 11 SCHC Fragments. FCN is 1 bit wide.</t> <figuretitle="No-ACK mode,anchor="Fig-Example-Unreliable"> <name>No-ACK Mode, 11 SCHCFragments" anchor="Fig-Example-Unreliable"><artwork><![CDATA[ SenderFragments</name> <artwork name="" type="" align="left" alt=""><![CDATA[ Sender Receiver |-------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(End) ]]></artwork></figure>(End)]]></artwork> </figure> <t>In the following examples, N (the size of the FCN field) is 3 bits. The All-1 FCN value is therefore 7.</t> <t><xreftarget="Fig-Example-Win-NoLoss-NACK"/>target="Fig-Example-Win-NoLoss-NACK" format="default"/> illustrates the transmission in ACK-on-Error mode of a SCHC Packet fragmented in 11 tiles, with one tile per SCHC Fragment, WINDOW_SIZE=7 and no lost SCHC Fragment.</t> <figuretitle="ACK-on-Error mode,anchor="Fig-Example-Win-NoLoss-NACK"> <name>ACK-on-Error Mode, 11tiles, one tileTiles, One Tile per SCHC Fragment,no lostNo Lost SCHCFragment." anchor="Fig-Example-Win-NoLoss-NACK"><artwork><![CDATA[ SenderFragment</name> <artwork name="" type="" align="left" alt=""><![CDATA[ Sender Receiver |-----W=0, FCN=6----->| |-----W=0, FCN=5----->| |-----W=0, FCN=4----->| |-----W=0, FCN=3----->| |-----W=0, FCN=2----->| |-----W=0, FCN=1----->| |-----W=0, FCN=0----->| (no ACK) |-----W=1, FCN=6----->| |-----W=1, FCN=5----->| |-----W=1, FCN=4----->| |--W=1, FCN=7 + RCS-->| Integrity check: success |<-- ACK, W=1, C=1 ---| C=1(End) ]]></artwork></figure>(End)]]></artwork> </figure> <t><xreftarget="Fig-Example-Rel-Window-NACK-Loss"/>target="Fig-Example-Rel-Window-NACK-Loss" format="default"/> illustrates the transmission in ACK-on-Error mode of a SCHC Packet fragmented in 11 tiles, with one tile per SCHC Fragment,WINDOW_SIZE=7WINDOW_SIZE=7, and three lost SCHC Fragments.</t> <figuretitle="ACK-on-Error mode,anchor="Fig-Example-Rel-Window-NACK-Loss"> <name>ACK-on-Error Mode, 11tiles, one tileTiles, One Tile per SCHC Fragment,lostLost SCHCFragments." anchor="Fig-Example-Rel-Window-NACK-Loss"><artwork><![CDATA[Fragments</name> <artwork name="" type="" align="left" alt=""><![CDATA[ SenderReceiver |-----W=0, FCN=6----->| |-----W=0, FCN=5----->| |-----W=0, FCN=4--X-->| |-----W=0, FCN=3----->| |-----W=0, FCN=2--X-->| |-----W=0, FCN=1----->| |-----W=0, FCN=0----->| 6543210 |<-- ACK, W=0, C=0 ---| Bitmap:1101011 |-----W=0, FCN=4----->| |-----W=0, FCN=2----->| (no ACK) |-----W=1, FCN=6----->| |-----W=1, FCN=5----->| |-----W=1, FCN=4--X-->| |- W=1, FCN=7 + RCS ->| Integrity check: failure |<-- ACK, W=1, C=0 ---| C=0, Bitmap:1100001 |-----W=1, FCN=4----->| Integrity check: success |<-- ACK, W=1, C=1 ---| C=1(End) ]]></artwork></figure>(End)]]></artwork> </figure> <t><xreftarget="Figure-Example-ACK-on-Error-VarMTU"/>target="Figure-Example-ACK-on-Error-VarMTU" format="default"/> shows an example of a transmission in ACK-on-Error mode of a SCHC Packet fragmented in 73 tiles, with N=5, WINDOW_SIZE=28,M=2M=2, and3three lost SCHC Fragments.</t> <figuretitle="ACK-on-Error mode, variable MTU." anchor="Figure-Example-ACK-on-Error-VarMTU"><artwork><![CDATA[anchor="Figure-Example-ACK-on-Error-VarMTU"> <name>ACK-on-Error Mode, Variable MTU</name> <artwork name="" type="" align="left" alt=""><![CDATA[ Sender Receiver |-----W=0, FCN=27----->| 4 tiles sent |-----W=0, FCN=23----->| 4 tiles sent |-----W=0, FCN=19----->| 4 tiles sent |-----W=0, FCN=15--X-->| 4 tiles sent (not received) |-----W=0, FCN=11----->| 4 tiles sent |-----W=0, FCN=7 ----->| 4 tiles sent |-----W=0, FCN=3 ----->| 4 tiles sent |-----W=1, FCN=27----->| 4 tiles sent |-----W=1, FCN=23----->| 4 tiles sent |-----W=1, FCN=19----->| 4 tiles sent |-----W=1, FCN=15----->| 4 tiles sent |-----W=1, FCN=11----->| 4 tiles sent |-----W=1, FCN=7 ----->| 4 tiles sent |-----W=1, FCN=3 --X-->| 4 tiles sent (not received) |-----W=2, FCN=27----->| 4 tiles sent |-----W=2, FCN=23----->| 4 tiles sent ^ |-----W=2, FCN=19----->| 1 tile sent | |-----W=2, FCN=18----->| 1 tile sent | |-----W=2, FCN=17----->| 1 tile sent |-----W=2, FCN=16----->| 1 tile sent s |-----W=2, FCN=15----->| 1 tile sent m |-----W=2, FCN=14----->| 1 tile sent a |-----W=2, FCN=13--X-->| 1 tile sent (not received) l |-----W=2, FCN=12----->| 1 tile sent l |---W=2, FCN=31 + RCS->| Integrity check: failure e |<--- ACK, W=0, C=0 ---| C=0, Bitmap:1111111111110000111111111111 r |-----W=0, FCN=15----->| 1 tile sent |-----W=0, FCN=14----->| 1 tile sent L |-----W=0, FCN=13----->| 1 tile sent 2 |-----W=0, FCN=12----->| 1 tile sent |<--- ACK, W=1, C=0 ---| C=0, Bitmap:1111111111111111111111110000 M |-----W=1, FCN=3 ----->| 1 tile sent T |-----W=1, FCN=2 ----->| 1 tile sent U |-----W=1, FCN=1 ----->| 1 tile sent |-----W=1, FCN=0 ----->| 1 tile sent | |<--- ACK, W=2, C=0 ---| C=0, Bitmap:1111111111111101000000000001 | |-----W=2, FCN=13----->| Integrity check: success V |<--- ACK, W=2, C=1 ---| C=1(End) ]]></artwork></figure>(End)]]></artwork> </figure> <t>In this example, the L2 MTU becomes reduced just before sending the“W=2, FCN=19”"W=2, FCN=19" fragment, leaving space for only1one tile in each forthcoming SCHC Fragment. Before retransmissions, the 73 tiles are carried by a total of 25 SCHC Fragments, the last9nine being of smaller size.</t> <t>Note: other sequences of events (e.g., regarding when ACKs are sent by the Receiver) are also allowed by this specification. Profiles may restrict this flexibility.</t> <t><xreftarget="Fig-Example-Rel-Window-ACK-NoLoss"/>target="Fig-Example-Rel-Window-ACK-NoLoss" format="default"/> illustrates the transmission in ACK-Always mode of a SCHC Packet fragmented in 11 tiles, with one tile per SCHC Fragment, with N=3,WINDOW_SIZE=7WINDOW_SIZE=7, and no loss.</t> <figuretitle="ACK-Always mode,anchor="Fig-Example-Rel-Window-ACK-NoLoss"> <name>ACK-Always Mode, 11tiles, one tileTiles, One Tile per SCHC Fragment,no loss." anchor="Fig-Example-Rel-Window-ACK-NoLoss"><artwork><![CDATA[ SenderNo Loss</name> <artwork name="" type="" align="left" alt=""><![CDATA[ Sender Receiver |-----W=0, FCN=6----->| |-----W=0, FCN=5----->| |-----W=0, FCN=4----->| |-----W=0, FCN=3----->| |-----W=0, FCN=2----->| |-----W=0, FCN=1----->| |-----W=0, FCN=0----->| |<-- ACK, W=0, C=0 ---| Bitmap:1111111 |-----W=1, FCN=6----->| |-----W=1, FCN=5----->| |-----W=1, FCN=4----->| |--W=1, FCN=7 + RCS-->| Integrity check: success |<-- ACK, W=1, C=1 ---| C=1(End) ]]></artwork></figure>(End)]]></artwork> </figure> <t><xreftarget="Fig-Example-Rel-Window-ACK-Loss"/>target="Fig-Example-Rel-Window-ACK-Loss" format="default"/> illustrates the transmission in ACK-Always mode of a SCHC Packet fragmented in 11 tiles, with one tile per SCHC Fragment, N=3, WINDOW_SIZE=7 and three lost SCHC Fragments.</t> <figuretitle="ACK-Always mode,anchor="Fig-Example-Rel-Window-ACK-Loss"> <name>ACK-Always Mode, 11tiles, one tileTiles, One Tile per SCHC Fragment,three lostThree Lost SCHCFragments." anchor="Fig-Example-Rel-Window-ACK-Loss"><artwork><![CDATA[ SenderFragments</name> <artwork name="" type="" align="left" alt=""><![CDATA[ Sender Receiver |-----W=0, FCN=6----->| |-----W=0, FCN=5----->| |-----W=0, FCN=4--X-->| |-----W=0, FCN=3----->| |-----W=0, FCN=2--X-->| |-----W=0, FCN=1----->| |-----W=0, FCN=0----->| 6543210 |<-- ACK, W=0, C=0 ---| Bitmap:1101011 |-----W=0, FCN=4----->| |-----W=0, FCN=2----->| |<-- ACK, W=0, C=0 ---| Bitmap:1111111 |-----W=1, FCN=6----->| |-----W=1, FCN=5----->| |-----W=1, FCN=4--X-->| |--W=1, FCN=7 + RCS-->| Integrity check: failure |<-- ACK, W=1, C=0 ---| C=0, Bitmap:11000001 |-----W=1, FCN=4----->| Integrity check: success |<-- ACK, W=1, C=1 ---| C=1(End) ]]></artwork></figure>(End)]]></artwork> </figure> <t><xreftarget="Fig-Example-Rel-Window-ACK-Loss-Last-A"/>target="Fig-Example-Rel-Window-ACK-Loss-Last-A" format="default"/> illustrates the transmission in ACK-Always mode of a SCHC Packet fragmented in6six tiles, with one tile per SCHC Fragment, N=3, WINDOW_SIZE=7, three lost SCHCFragmentsFragments, and only one retry needed to recover each lost SCHC Fragment.</t> <figuretitle="ACK-Always mode, 6 tiles, one tileanchor="Fig-Example-Rel-Window-ACK-Loss-Last-A"> <name>ACK-Always Mode, Six Tiles, One Tile per SCHC Fragment,three lostThree Lost SCHCFragments." anchor="Fig-Example-Rel-Window-ACK-Loss-Last-A"><artwork><![CDATA[Fragments</name> <artwork name="" type="" align="left" alt=""><![CDATA[ Sender Receiver |-----W=0, FCN=6----->| |-----W=0, FCN=5----->| |-----W=0, FCN=4--X-->| |-----W=0, FCN=3--X-->| |-----W=0, FCN=2--X-->| |--W=0, FCN=7 + RCS-->| Integrity check: failure |<-- ACK, W=0, C=0 ---| C=0, Bitmap:1100001 |-----W=0, FCN=4----->| Integrity check: failure |-----W=0, FCN=3----->| Integrity check: failure |-----W=0, FCN=2----->| Integrity check: success |<-- ACK, W=0, C=1 ---| C=1(End) ]]></artwork></figure>(End)]]></artwork> </figure> <t><xreftarget="Fig-Example-Rel-Window-ACK-Loss-Last-B"/>target="Fig-Example-Rel-Window-ACK-Loss-Last-B" format="default"/> illustrates the transmission in ACK-Always mode of a SCHC Packet fragmented in6six tiles, with one tile per SCHC Fragment, N=3, WINDOW_SIZE=7, three lost SCHC Fragments, and the second SCHC ACK lost.</t> <figuretitle="ACK-Always mode, 6 tiles, one tileanchor="Fig-Example-Rel-Window-ACK-Loss-Last-B"> <name>ACK-Always Mode, Six Tiles, One Tile per SCHC Fragment, SCHC ACKloss." anchor="Fig-Example-Rel-Window-ACK-Loss-Last-B"><artwork><![CDATA[Loss</name> <artwork name="" type="" align="left" alt=""><![CDATA[ Sender Receiver |-----W=0, FCN=6----->| |-----W=0, FCN=5----->| |-----W=0, FCN=4--X-->| |-----W=0, FCN=3--X-->| |-----W=0, FCN=2--X-->| |--W=0, FCN=7 + RCS-->| Integrity check: failure |<-- ACK, W=0, C=0 ---| C=0, Bitmap:1100001 |-----W=0, FCN=4----->| Integrity check: failure |-----W=0, FCN=3----->| Integrity check: failure |-----W=0, FCN=2----->| Integrity check: success |<-X-ACK, W=0, C=1 ---| C=1 timeout | | |--- W=0, ACK REQ --->| ACK REQ |<-- ACK, W=0, C=1 ---| C=1(End) ]]></artwork></figure>(End)]]></artwork> </figure> <t><xreftarget="Fig-Example-Rel-Window-ACK-Loss-Last-C"/>target="Fig-Example-Rel-Window-ACK-Loss-Last-C" format="default"/> illustrates the transmission in ACK-Always mode of a SCHC Packet fragmented in6six tiles, with N=3, WINDOW_SIZE=7, with three lost SCHC Fragments, and one retransmitted SCHC Fragment lost again.</t> <figuretitle="ACK-Always mode, 6 tiles, retransmittedanchor="Fig-Example-Rel-Window-ACK-Loss-Last-C"> <name>ACK-Always Mode, Six Tiles, Retransmitted SCHC Fragmentlost again." anchor="Fig-Example-Rel-Window-ACK-Loss-Last-C"><artwork><![CDATA[Lost Again</name> <artwork name="" type="" align="left" alt=""><![CDATA[ Sender Receiver |-----W=0, FCN=6----->| |-----W=0, FCN=5----->| |-----W=0, FCN=4--X-->| |-----W=0, FCN=3--X-->| |-----W=0, FCN=2--X-->| |--W=0, FCN=7 + RCS-->| Integrity check: failure |<-- ACK, W=0, C=0 ---| C=0, Bitmap:1100001 |-----W=0, FCN=4----->| Integrity check: failure |-----W=0, FCN=3----->| Integrity check: failure |-----W=0, FCN=2--X-->| timeout| | |--- W=0, ACK REQ --->| ACK REQ |<-- ACK, W=0, C=0 ---| C=0, Bitmap: 1111101 |-----W=0, FCN=2----->| Integrity check: success |<-- ACK, W=0, C=1 ---| C=1(End) ]]></artwork></figure>(End)]]></artwork> </figure> <t><xreftarget="Fig-Example-MaxWindFCN"/>target="Fig-Example-MaxWindFCN" format="default"/> illustrates the transmission in ACK-Always mode of a SCHC Packet fragmented in 28 tiles, with one tile per SCHC Fragment, N=5,WINDOW_SIZE=24WINDOW_SIZE=24, and two lost SCHC Fragments.</t> <figuretitle="ACK-Always mode,anchor="Fig-Example-MaxWindFCN"> <name>ACK-Always Mode, 28tiles, one tileTiles, One Tile per SCHC Fragment,lostLost SCHCFragments." anchor="Fig-Example-MaxWindFCN"><artwork><![CDATA[Fragments</name> <artwork name="" type="" align="left" alt=""><![CDATA[ Sender Receiver |-----W=0, FCN=23----->| |-----W=0, FCN=22----->| |-----W=0, FCN=21--X-->| |-----W=0, FCN=20----->| |-----W=0, FCN=19----->| |-----W=0, FCN=18----->| |-----W=0, FCN=17----->| |-----W=0, FCN=16----->| |-----W=0, FCN=15----->| |-----W=0, FCN=14----->| |-----W=0, FCN=13----->| |-----W=0, FCN=12----->| |-----W=0, FCN=11----->| |-----W=0, FCN=10--X-->| |-----W=0, FCN=9 ----->| |-----W=0, FCN=8 ----->| |-----W=0, FCN=7 ----->| |-----W=0, FCN=6 ----->| |-----W=0, FCN=5 ----->| |-----W=0, FCN=4 ----->| |-----W=0, FCN=3 ----->| |-----W=0, FCN=2 ----->| |-----W=0, FCN=1 ----->| |-----W=0, FCN=0 ----->| | | |<--- ACK, W=0, C=0 ---| Bitmap:110111111111101111111111 |-----W=0, FCN=21----->| |-----W=0, FCN=10----->| |<--- ACK, W=0, C=0 ---| Bitmap:111111111111111111111111 |-----W=1, FCN=23----->| |-----W=1, FCN=22----->| |-----W=1, FCN=21----->| |--W=1, FCN=31 + RCS-->| Integrity check: success |<--- ACK, W=1, C=1 ---| C=1(End) ]]></artwork></figure>(End)]]></artwork> </figure> </section> <section anchor="FSM"title="Fragmentationnumbered="true" toc="default"> <name>Fragmentation StateMachines">Machines</name> <t>The fragmentation state machines of the sender and the receiver, one for each of the different reliability modes, are described in the following figures:</t> <figuretitle="Senderanchor="Fig-NoACKModeSnd"> <name>Sender State Machine for the No-ACKMode" anchor="Fig-NoACKModeSnd"><artwork><![CDATA[Mode</name> <artwork name="" type="" align="left" alt=""><![CDATA[ +===========+ +------------+ Init | | FCN=0 +===========+ | No Window | No Bitmap | +-------+ | +========+==+ | More Fragments | | | <--+ ~~~~~~~~~~~~~~~~~~~~ +--------> | Send | send Fragment (FCN=0) +===+=======+ | last fragment | ~~~~~~~~~~~~ | FCN = 1 v send fragment+RCS +============+ | END |+============+ ]]></artwork></figure>+============+]]></artwork> </figure> <figuretitle="Receiveranchor="Fig-NoACKModeRcv"> <name>Receiver State Machine for the No-ACKMode" anchor="Fig-NoACKModeRcv"><artwork><![CDATA[Mode</name> <artwork name="" type="" align="left" alt=""><![CDATA[ +------+ Not All-1 +==========+=+ | ~~~~~~~~~~~~~~~~~~~ | + <--+ set Inactivity Timer | RCV Frag +-------+ +=+===+======+ |All-1 & All-1 & | | |RCS correct RCS wrong | |Inactivity | | |Timer Exp. | v | | +==========++ | v | Error |<-+ +========+==+ +===========+ | END |+===========+ ]]></artwork></figure>+===========+]]></artwork> </figure> <figuretitle="Senderanchor="Fig-ACKAlwaysSnd"> <name>Sender State Machine for the ACK-AlwaysMode" anchor="Fig-ACKAlwaysSnd"><artwork><![CDATA[Mode</name> <artwork name="" type="" align="left" alt=""><![CDATA[ +=======+ | INIT | FCN!=0 & more frags | | ~~~~~~~~~~~~~~~~~~~~~~ +======++ +--+ send Window + frag(FCN) W=0 | | | FCN- Clear lcl_bm | | v set lcl_bm FCN=max value | ++==+========+ +> | | +---------------------> | SEND | | +==+===+=====+ | FCN==0 & more frags | | last frag | ~~~~~~~~~~~~~~~~~~~~~ | | ~~~~~~~~~~~~~~~ | set lcl_bm | | set lcl_bm | send wnd + frag(all-0) | | send wnd+frag(all-1)+RCS | set Retrans_Timer | | set Retrans_Timer | | | |Recv_wnd == wnd & | | |lcl_bm==recv_bm & | | +----------------------+ |more frag | | | lcl_bm!=rcv-bm | |~~~~~~~~~~~~~~~~~~~~~~ | | | ~~~~~~~~~ | |Stop Retrans_Timer | | | Attempt++ v |clear lcl_bm v v | +=====+=+ |window=next_window +====+===+==+===+ |Resend | +---------------------+ | |Missing| +----+ Wait | |Frag | not expected wnd | | Bitmap | +=======+ ~~~~~~~~~~~~~~~~ +--->+ ++Retrans_Timer Exp | discard frag +==+=+===+=+==+=+| ~~~~~~~~~~~~~~~~~ | | | | ^ ^ |reSend(empty)All-* | | | | | | |Set Retrans_Timer | | | | | +--+Attempt++ | C_bit==1 & | | | +-------------------------+ Recv_window==window & | | | all missing frags sent no more frag| | | ~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~|||| Set Retrans_TimerStop Retrans_Timer| | | +=============+ | | | | END +<--------+ | | +=============+ | | Attempt > MAX_ACK_REQUESTS All-1 Window & | | ~~~~~~~~~~~~~~~~~~ C_bit ==0 & | v Send Abort lcl_bm==recv_bm | +=+===========+~~~~~~~~~~~~ +>| ERROR | Send Abort+=============+ ]]></artwork></figure>+=============+]]></artwork> </figure> <figuretitle="Receiveranchor="Fig-ACKAlwaysRcv"> <name>Receiver State Machine for the ACK-AlwaysMode" anchor="Fig-ACKAlwaysRcv"><artwork><![CDATA[Mode</name> <artwork name="" type="" align="left" alt=""><![CDATA[ Not All- & w=expected +---+ +---+w = Not expected ~~~~~~~~~~~~~~~~~~~~~ | | | |~~~~~~~~~~~~~~~~ Set lcl_bm(FCN) | v v |discard ++===+===+===+=+ +---------------------+Rcv+--->* ABORT | +------------------+Window| | |+=====+==+=====+ | |All-0 & w=expect |^^ w =next & not-All | | ~~~~~~~~~~~~~~~~~~ | |~~~~~~~~~~~~~~~~~~~~~ | | set lcl_bm(FCN) | |expected = next window | | send lcl_bm | |Clear lcl_bm | | | | | | w=expected & not-All | | | | ~~~~~~~~~~~~~~~~~~ | | | | set lcl_bm(FCN)+-+ | | +--+ w=next & All-0 | | if lcl_bm full | | | | | | ~~~~~~~~~~~~~~~ | | send lcl_bm | | | | | | expected = nxt wnd | | v | v | | | Clear lcl_bm | |w=expected& All-1 +=+=+=+==+=++ | set lcl_bm(FCN) | | ~~~~~~~~~~~ +->+ Wait +<+ send lcl_bm | | discard +--| Next | | | All-0 +---------+ Window +--->* ABORT | | ~~~~~ +-------->+========+=++ | | snd lcl_bm All-1 & w=next| | All-1 & w=nxt | | & RCS wrong| | & RCS right | | ~~~~~~~~~~~~~~~~~| | ~~~~~~~~~~~~~~~~~~ | | set lcl_bm(FCN)| |set lcl_bm(FCN) | | send lcl_bm| |send lcl_bm | | | +----------------------+ | |All-1 & w=expected | | | |& RCS wrong v +---+ w=expected & | | |~~~~~~~~~~~~~~~~~~~~ +====+=====+ | RCS wrong | | |set lcl_bm(FCN) | +<+ ~~~~~~~~~~~~~~ | | |send lcl_bm | Wait End | set lcl_bm(FCN)| | +--------------------->+ +--->* ABORT | | +===+====+=+-+ All-1&RCS wrong| | | ^ | ~~~~~~~~~~~~~~~| | w=expected & RCS right | +---+ send lcl_bm | | ~~~~~~~~~~~~~~~~~~~~~~ | | | set lcl_bm(FCN) | +-+ Not All-1 | | send lcl_bm | | | ~~~~~~~~~ | | | | | discard | |All-1&w=expected & RCS right | | | | |~~~~~~~~~~~~~~~~~~~~~~~~~~~~ v | v +----+All-1 | |set lcl_bm(FCN) +=+=+=+=+==+ |~~~~~~~~~ | |send lcl_bm | +<+Send lcl_bm | +-------------------------->+ END | | +==========+<---------------+ --->* ABORT In any state on receiving a SCHC ACK REQ Send a SCHC ACK for the currentwindow ]]></artwork></figure>window]]></artwork> </figure> <figuretitle="Senderanchor="Fig-ACKonerrorSnd"> <name>Sender State Machine for the ACK-on-ErrorMode" anchor="Fig-ACKonerrorSnd"><artwork><![CDATA[Mode</name> <artwork name="" type="" align="left" alt=""><![CDATA[ +=======+ | | | INIT | | | FCN!=0 & more frags +======++ ~~~~~~~~~~~~~~~~~~~~~~ Frag RuleID trigger | +--+ Send cur_W + frag(FCN); ~~~~~~~~~~~~~~~~~~~ | | | FCN--; cur_W=0; FCN=max_value;| | | set [cur_W, cur_Bmp] clear [cur_W, Bmp_n];| | v clear rcv_Bmp | ++==+==========+ **BACK_TO_SEND +->+ | cur_W==rcv_W & **BACK_TO_SEND | SEND | [cur_W,Bmp_n]==rcv_Bmp +-------------------------->+ | & more frags | +----------------------->+ | ~~~~~~~~~~~~ | |++===+=========+++==+==========+ cur_W++; | | FCN==0 & more frags| |last frag clear [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; | | set Retrans_Timer| |set Retrans_Timer | | | |+-----------------------------------++---------------------------------+ | | | | |cur_W == | | |Retrans_Timer expires & | ||cur_W==rcv_W&[cur_W,Bmp_n]!=rcv_Bmp|| rcv_W & [cur_W,Bmp_n]!=rcv_Bmp| | |more Frags | | | ~~~~~~~~~~~~~~~~~~~ | | |~~~~~~~~~~~~~~~~~~~~ | | | Attempts++; W=cur_W | | |stop Retrans_Timer; | | | +--------+ rcv_W==Wn &| | |[cur_W,Bmp_n]==cur_Bmp; v v | | v [Wn,Bmp_n]!=rcv_Bmp| | |cur_W+++=====+===+=+=+==++=====+==+=+=+==+ +=+=========+ ~~~~~~~~~~~| | +-------------------+ | | Resend | Attempts++;| +----------------------+ Wait x ACK | | Missing | W=Wn | +--------------------->+ | | Frags(W)+<-------------++<-----------+ | rcv_W==Wn &+-+ | +======+====+ | [Wn,Bmp_n]!=rcv_Bmp|++=+===+===+==+==+++=+===+===+==+=+ | | ~~~~~~~~~~~~~~| ^ | | | ^ | | send (cur_W,+--+ | | |+-------------++------------+ | ALL-0-empty) | | | all missing frag sent(W) | | | | ~~~~~~~~~~~~~~~~~ | Retrans_Timer expires &| | | set Retrans_Timer | No more Frags| | | | ~~~~~~~~~~~~~~| | | | stop Retrans_Timer;| | | |(re)send frag(All-1)+RCS | | | +-------------------------+ | | cur_W==rcv_W&| | [cur_W,Bmp_n]==rcv_Bmp&| | Attempts > MAX_ACK_REQUESTS No more Frags & RCS flag==OK| | ~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~| | send Abort +=========+stop Retrans_Timer| | +===========+ | END +<-----------------+ +->+ ERROR | +=========++===========+ ]]></artwork></figure>+===========+]]></artwork> </figure> <t>This is an example only. It is not normative. The specification in <xreftarget="ACK-on-Error-sender"/>target="ACK-on-Error-sender" format="default"/> allows for sequences of operations different from the one shown here.</t><figure><artwork><![CDATA[<artwork name="" type="" align="left" alt=""><![CDATA[ +=======+ New frag RuleID received | | ~~~~~~~~~~~~~ | INIT +-------+cur_W=0;clear([cur_W,Bmp_n]); +=======+ |sync=0 | Not All* & rcv_W==cur_W+---+ |+---++--+ ~~~~~~~~~~~~~~~~~~~~ | | | | (E) set[cur_W,Bmp_n(FCN)]| v v v |++===+=+=+===+=+++===+=+=+==+=+ +----------------------+ +--+ All-0&Full[cur_W,Bmp_n] | ABORT *<---+ Rcv Window | | ~~~~~~~~~~ | +-------------------+ +<-+ cur_W++;set Inact_timer; | |+->+=+=+=+=+=+====++->+=+=+=+=+=+===+ clear [cur_W,Bmp_n] | | All-0 empty(Wn)| | | | ^ ^ | | ~~~~~~~~~~~~~~ +----+ | | | |rcv_W==cur_W & sync==0; | | sendACK([Wn,Bmp_n]) | | | |& Full([cur_W,Bmp_n]) | | | | | |& All* || last_miss_frag | | | | | |~~~~~~~~~~~~~~~~~~~~~~ | | All* & rcv_W==cur_W|(C)| |sendACK([cur_W,Bmp_n]); | | & sync==0| | | |cur_W++; clear([cur_W,Bmp_n]) | |&no_full([cur_W,Bmp_n])| |(E)| | | ~~~~~~~~~~~~~~~~ | | | | +========+ | | sendACK([cur_W,Bmp_n])| | | | | Error/ | | | | | | | +----+ | Abort | | | v v | | | | +===+====+ | | +===+=+=+=+===+=+ (D) ^ | | +--+ Wait x | | | | | All-0 empty(Wn)+->| Missing Frags |<-+ | | | ~~~~~~~~~~~~~~ +=============+=+ | | | sendACK([Wn,Bmp_n]) +--------------+ | | *ABORT v v (A)(B) (D) All* || last_miss_frag (C) All* & sync>0 & rcv_W!=cur_W & sync>0 ~~~~~~~~~~~~ & Full([rcv_W,Bmp_n]) Wn=oldest[not full(W)]; ~~~~~~~~~~~~~~~~~~~~ sendACK([Wn,Bmp_n]) Wn=oldest[not full(W)]; 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 Abortset[cur_W,Bmp_n(FCN)] ]]></artwork></figure>set[cur_W,Bmp_n(FCN)]]]></artwork> <figuretitle="Receiveranchor="Fig-ACKonerrorRcv"> <name>Receiver State Machine for the ACK-on-ErrorMode" anchor="Fig-ACKonerrorRcv"><artwork><![CDATA[Mode</name> <artwork name="" type="" align="left" alt=""><![CDATA[ (A)(B) | | | | All-1 & rcv_W==cur_W & RCS!=OK All-0 empty(Wn) | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-+ ~~~~~~~~~~ | | sendACK([cur_W,Bmp_n],C=0) | v sendACK([Wn,Bmp_n]) | | +===========+=++ | +--------------------->+ Wait End +-+ | +=====+=+====+=+ | All-1 | rcv_W==cur_W & RCS==OK | | ^ | & rcv_W==cur_W | ~~~~~~~~~~~~~~~~~~~~~~ | | +---+ & RCS!=OK | sendACK([cur_W,Bmp_n],C=1) | | ~~~~~~~~~~~~~~~~~~~ | | | sendACK([cur_W,Bmp_n],C=0); | | | Attempts++ |All-1 & Full([cur_W,Bmp_n]) | | |& RCS==OK & sync==0 | +-->* ABORT |~~~~~~~~~~~~~~~~~~~ v |sendACK([cur_W,Bmp_n],C=1) +=+=========+ +---------------------------->+ END |+===========+ ]]></artwork></figure>+===========+]]></artwork> </figure> </section> <section anchor="SCHCParams"title="SCHC Parameters">numbered="true" toc="default"> <name>SCHC Parameters</name> <t>This section lists the information that needs to be provided in the LPWAN technology-specific documents.</t><t><list style="symbols"> <t>Most<ul spacing="normal"> <li>Most common uses cases, deploymentscenarios</t> <t>Mappingscenarios.</li> <li>Mapping of the SCHC architectural elements onto the LPWANarchitecture</t> <t>Assessmentarchitecture.</li> <li>Assessment of LPWAN integritychecking</t> <t>Variouschecking.</li> <li>Various potential channel conditions for the technology and the corresponding recommended use of SCHC C/D andF/R</t> </list></t>SCHC F/R.</li> </ul> <t>This section lists the parameters that need to be defined in the Profile.</t><t><list style="symbols"> <t>Rule ID<ul spacing="normal"> <li>RuleID numbering scheme,fixed-sizedfixed-size orvariable-sized Rule IDs,variable-size RuleIDs, number of Rules, the way theRule IDRuleID istransmitted</t> <t>maximumtransmitted.</li> <li>maximum packet size that should ever be reconstructed by SCHCDecompressiondecompression (MAX_PACKET_SIZE). See <xreftarget="SecConsiderations"/>.</t> <t>Padding:target="SecConsiderations" format="default"/>.</li> <li>Padding: size of the L2 Word (for most LPWAN technologies, this would be a byte; for some technologies, abit)</t>bit).</li> <li> <t>Decision to use SCHC fragmentation mechanism or not. If yes, the document must describe:<list style="symbols"> <t>reliability</t> <ul spacing="normal"> <li>reliability mode(s) used, in which cases (e.g., based on link channelcondition)</t> <t>Rule IDcondition).</li> <li>RuleID values assigned to each mode inuse</t> <t>presenceuse.</li> <li>presence and number of bits for DTag (T) for eachRule IDRuleID value, lifetime of DTag at thereceiver</t> <t>supportreceiver.</li> <li>support for interleaved packet transmission, to whatextent</t> <t>WINDOW_SIZE,extent.</li> <li>WINDOW_SIZE, for modes that usewindows</t> <t>numberwindows.</li> <li>number of bits for W (M) for eachRule IDRuleID value, for modes that usewindows</t> <t>numberwindows.</li> <li>number of bits for FCN (N) for eachRule ID value</t> <t>whatRuleID value, meaning of the FCN values.</li> <li>what makes an All-0 SCHC Fragment and a SCHC ACK REQ distinguishable (see <xreftarget="NotLastFrag"/>).</t> <t>whattarget="NotLastFrag" format="default"/>).</li> <li>what makes an All-1 SCHC Fragment and a SCHC Sender-Abort distinguishable (see <xreftarget="LastFrag"/>).</t> <t>sizetarget="LastFrag" format="default"/>).</li> <li>for RuleIDs that use ACK-on-Error mode: when the last tile of a SCHC Packet is to be sent in a Regular SCHC Fragment, alone in an All-1 SCHC Fragment or with any of these two methods.</li> <li>for RuleIDs that use ACK-on-Error mode: if the penultimate tile of a SCHC Packet is of the regular size only or if it can also be one L2 Word shorter.</li> <li>for RuleIDs that use ACK-on-Error mode: times at which the sender must listen for SCHC ACKs.</li> <li>size of RCS and algorithm for its computation, for eachRule ID,RuleID, if different from the default CRC32. Byte fill-up with zeroes or other mechanism, to bespecified.</t> <t>Retransmissionspecified. Support for UDP checksum elision.</li> <li>Retransmission Timer duration for eachRule IDRuleID value, if applicable to the SCHC F/Rmode</t> <t>Inactivitymode.</li> <li>Inactivity Timer duration for eachRule IDRuleID value, if applicable to the SCHC F/Rmode</t> <t>MAX_ACK_REQUESTSmode.</li> <li>MAX_ACK_REQUESTS value for eachRule IDRuleID value, if applicable to the SCHC F/Rmode</t> </list></t> <t>ifmode.</li> </ul> </li> <li>if L2 Word is wider than a bit and SCHC fragmentation is used, value of the padding bits (0 or1). This is needed because the padding bits of the last fragment are included in the RCS computation.</t> </list></t>1).</li> </ul> <t>A Profile may define a delay to be added after each SCHC message transmission for compliance with local regulations or other constraints imposed by the applications.</t><t><list style="symbols"> <t>In<ul spacing="normal"> <li>In some LPWAN technologies, as part of energy-saving techniques,downlinkDownlink transmission is only possible immediately after anuplinkUplink transmission. In order to avoid potentially high delay in thedownlinkDownlink transmission of a fragmented SCHC Packet, the SCHC Fragment receiver may perform anuplinkUplink transmission as soon as possible after reception of a SCHC Fragment that is not the last one. SuchuplinkUplink transmission may be triggered by the L2 (e.g., an L2 ACK sent in response to a SCHC Fragment encapsulated in a L2 PDU that requires an L2 ACK) or it may be triggered from an upper layer. See <xreftarget="AsymLinks"/>.</t>target="AsymLinks" format="default"/>.</li> <li> <t>the following parameters need to be addressed in documents other than this one but not necessarily in the LPWAN technology-specific documents:<list style="symbols"> <t>The</t> <ul spacing="normal"> <li>The way the Contexts areprovisioned</t> <t>Theprovisioned.</li> <li>The way the Rules aregenerated</t> </list></t> </list></t>generated.</li> </ul> </li> </ul> </section> <section anchor="MultWinSizes"title="Supporting multiple window sizesnumbered="true" toc="default"> <name>Supporting Multiple Window Sizes forfragmentation">Fragmentation</name> <t>For ACK-Always or ACK-on-Error, implementers may opt to support a single window size or multiple window sizes. The latter, when feasible, may provide performance optimizations. For example, a largewindow sizeWINDOW_SIZE should be used for packets that need to be split into a large number of tiles. However, when the number of tiles required to carry a packet is low, a smallerwindow size, and thusWINDOW_SIZE and, thus, a shorter Bitmap, may be sufficient to provide reception status on all tiles. If multiple window sizes are supported, theRule IDRuleID signalsthe window sizewhat WINDOW_SIZE is in use for a specific packet transmission.</t> </section> <section anchor="AsymLinks"title="ACK-Alwaysnumbered="true" toc="default"> <name>ACK-Always and ACK-on-Error onquasi-bidirectional links">Quasi-Bidirectional Links</name> <t>The ACK-Always and ACK-on-Error modes of SCHC F/R are bidirectional protocols: they require a feedback path from the reassembler to the fragmenter.</t> <t>Some LPWAN technologies provide quasi-bidirectional connectivity, whereby adownlinkDownlink transmission from the Network Infrastructure can only take place right after anuplinkUplink transmission by the Dev.</t> <t>When using SCHC F/R to send fragmented SCHC PacketsdownlinkDownlink over these quasi-bidirectional links, the following situation may arise: if anuplinkUplink SCHC ACK is lost, the SCHC ACK REQ message by the sender could be stuck indefinitely in thedownlinkDownlink queue at the Network Infrastructure, waiting for a transmission opportunity.</t> <t>There are many ways by which this deadlock can be avoided. The Dev application might be sending recurringuplinkUplink messages such as keep-alive, or the Dev application stack might be sending other recurringuplinkUplink messages as part of its operation. 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 specification may want to amend 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. Because it is an example, <xreftarget="RFC2119"/>target="RFC2119" format="default"/> language is deliberately not used here.</t> <t>FordownlinkDownlink transmission of a fragmented SCHC Packet in ACK-Always mode, the SCHC Fragment receiver may support timer-based SCHC ACK retransmission. In this mechanism, the SCHC Fragment receiver initializes and starts a timer (the UplinkACK Timer) after the transmission of a SCHC ACK, except when the SCHC ACK is sent in response to the last SCHC Fragment of a packet (All-1 fragment). In the latter case, the SCHC Fragment receiver does not start a timer after transmission 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 receiver receives a SCHC Fragment that belongs to the current window (e.g., a missing SCHC Fragment from the current window) or to the next window, the UplinkACK timer for the SCHC ACK is stopped. However, if the UplinkACK timer expires, the SCHC ACK is resent and the UplinkACK timer is reinitialized and restarted.</t> <t>The default initial value for the UplinkACK Timer, as well as the maximum number of retries for a specific SCHC ACK, denoted MAX_ACK_REQUESTS, is to be defined in a Profile. 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. One exception to this recommendation is the special case of the All-1 SCHC Fragment transmission.</t> <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 times that of the initial UplinkACK 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, or if the SCHC ACK confirms successful reception of all SCHC Fragments of the last window, 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 timer, the SCHC Fragment sender assumes that the All-1 SCHC Fragment has been successfully 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 Fragment receiver, and it also assumes that it is unlikely that several ACKs become all lost).</t> </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 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 carried out during his stay as a visiting scholar at the Computer Laboratory of the University of Cambridge.</t> </section> </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>