< draft-ietf-lpwan-ipv6-static-context-hc-04.txt   draft-ietf-lpwan-ipv6-static-context-hc-05.txt >
lpwan Working Group A. Minaburo lpwan Working Group A. Minaburo
Internet-Draft Acklio Internet-Draft Acklio
Intended status: Informational L. Toutain Intended status: Informational L. Toutain
Expires: December 18, 2017 IMT-Atlantique Expires: January 2, 2018 IMT-Atlantique
C. Gomez C. Gomez
Universitat Politecnica de Catalunya Universitat Politecnica de Catalunya
June 16, 2017 July 01, 2017
LPWAN Static Context Header Compression (SCHC) and fragmentation for LPWAN Static Context Header Compression (SCHC) and fragmentation for
IPv6 and UDP IPv6 and UDP
draft-ietf-lpwan-ipv6-static-context-hc-04 draft-ietf-lpwan-ipv6-static-context-hc-05
Abstract Abstract
This document describes a header compression scheme and fragmentation This document describes a header compression scheme and fragmentation
functionality for very low bandwidth networks. These techniques are functionality for very low bandwidth networks. These techniques are
especially tailored for LPWAN (Low Power Wide Area Network) networks. especially tailored for LPWAN (Low Power Wide Area Network) networks.
The Static Context Header Compression (SCHC) offers a great level of The Static Context Header Compression (SCHC) offers a great level of
flexibility when processing the header fields and must be used for flexibility when processing the header fields and must be used for
this kind of networks. A common context stored in a LPWAN device and these kind of networks. A common context stored in a LPWAN device
in the network is used. This context stores information that will and in the network is used. This context keeps information that will
not be transmitted in the constrained network. Static context means not be transmitted in the constrained network. Static context means
that information stored in the context which describes field values, that information stored in the context which describes field values,
does not change during packet transmission, avoiding complex does not change during packet transmission, avoiding complex
resynchronization mechanisms, incompatible with LPWAN resynchronization mechanisms, incompatible with LPWAN
characteristics. In most of the cases, IPv6/UDP headers are reduced characteristics. In most of the cases, IPv6/UDP headers are reduced
to a small identifier called Rule ID. But sometimes the SCHC header to a small identifier called Rule ID. But sometimes the SCHC header
compression will not be enough to send the packet in one L2 PDU, so compression mechanisms will not be enough to send the compressed
this document also describes a Fragmentation protocol that must be packet in one L2 PDU, so the SCHC Fragmentation protocol must be used
used when needed. when needed.
This document describes the generic compression/decompression This document describes SCHC compression/decompression mechanism
mechanism and applies it to IPv6/UDP headers. Similar mechanisms for framework and applies it to IPv6/UDP headers. Similar solutions for
other protocols such as CoAP will be described in separate documents. other protocols such as CoAP will be described in separate documents.
Moreover, this document specifies fragmentation and reassembly Moreover, this document specifies fragmentation and reassembly
mechanims for SCHC compressed packets exceeding the L2 PDU size and mechanim for SCHC compressed packets exceeding the L2 PDU size and
for the case where the SCHC compression is not possible then the for the case where the SCHC compression is not possible then the
IPv6/UDP packet is sent using the fragmentation protocol. packet is sent using the fragmentation protocol.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on December 18, 2017. This Internet-Draft will expire on January 2, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 3, line 21 skipping to change at page 3, line 21
7.11. UDP Checksum field . . . . . . . . . . . . . . . . . . . 18 7.11. UDP Checksum field . . . . . . . . . . . . . . . . . . . 18
8. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 18 8. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 18
8.1. IPv6/UDP compression . . . . . . . . . . . . . . . . . . 18 8.1. IPv6/UDP compression . . . . . . . . . . . . . . . . . . 18
9. Fragmentation . . . . . . . . . . . . . . . . . . . . . . . . 21 9. Fragmentation . . . . . . . . . . . . . . . . . . . . . . . . 21
9.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 21 9.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 21
9.2. Reliability options: definition . . . . . . . . . . . . . 22 9.2. Reliability options: definition . . . . . . . . . . . . . 22
9.3. Reliability options: discussion . . . . . . . . . . . . . 23 9.3. Reliability options: discussion . . . . . . . . . . . . . 23
9.4. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 23 9.4. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 23
9.5. Formats . . . . . . . . . . . . . . . . . . . . . . . . . 24 9.5. Formats . . . . . . . . . . . . . . . . . . . . . . . . . 24
9.5.1. Fragment format . . . . . . . . . . . . . . . . . . . 24 9.5.1. Fragment format . . . . . . . . . . . . . . . . . . . 24
9.5.2. Fragmentation header formats . . . . . . . . . . . . 24 9.5.2. Fragmentation header formats . . . . . . . . . . . . 25
9.5.3. ACK format . . . . . . . . . . . . . . . . . . . . . 26 9.5.3. ACK format . . . . . . . . . . . . . . . . . . . . . 27
9.6. Baseline mechanism . . . . . . . . . . . . . . . . . . . 28 9.6. Baseline mechanism . . . . . . . . . . . . . . . . . . . 28
9.7. Supporting multiple window sizes . . . . . . . . . . . . 29 9.7. Supporting multiple window sizes . . . . . . . . . . . . 31
9.8. Aborting fragmented IPv6 datagram transmissions . . . . . 30 9.8. Aborting fragmented IPv6 datagram transmissions . . . . . 31
9.9. Downlink fragment transmission . . . . . . . . . . . . . 30 9.9. Downlink fragment transmission . . . . . . . . . . . . . 31
10. Security considerations . . . . . . . . . . . . . . . . . . . 30 10. Security considerations . . . . . . . . . . . . . . . . . . . 31
10.1. Security considerations for header compression . . . . . 30 10.1. Security considerations for header compression . . . . . 31
10.2. Security considerations for fragmentation . . . . . . . 31 10.2. Security considerations for fragmentation . . . . . . . 32
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 31 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 32
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 32 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 33
12.1. Normative References . . . . . . . . . . . . . . . . . . 32 12.1. Normative References . . . . . . . . . . . . . . . . . . 33
12.2. Informative References . . . . . . . . . . . . . . . . . 32 12.2. Informative References . . . . . . . . . . . . . . . . . 33
Appendix A. Fragmentation examples . . . . . . . . . . . . . . . 32 Appendix A. Fragmentation examples . . . . . . . . . . . . . . . 33
Appendix B. Rule IDs for fragmentation . . . . . . . . . . . . . 35 Appendix B. Rule IDs for fragmentation . . . . . . . . . . . . . 36
Appendix C. Note . . . . . . . . . . . . . . . . . . . . . . . . 36 Appendix C. Note . . . . . . . . . . . . . . . . . . . . . . . . 37
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 37
1. Introduction 1. Introduction
Header compression is mandatory to efficiently bring Internet Header compression is mandatory to efficiently bring Internet
connectivity to the node within a LPWAN network. Some LPWAN networks connectivity to the node within a LPWAN network. Some LPWAN networks
properties can be exploited for an efficient header compression: properties can be exploited to get an efficient header compression:
o Topology is star-oriented, therefore all the packets follow the o Topology is star-oriented, therefore all the packets follow the
same path. For the needs of this draft, the architecture can be same path. For the needs of this draft, the architecture can be
summarized to Devices (Dev) exchanging information with LPWAN summarized to Devices (Dev) exchanging information with LPWAN
Application Server (App) through a Network Gateway (NGW). Application Server (App) through a Network Gateway (NGW).
o Traffic flows are mostly known in advance, since devices embed o Traffic flows are mostly known in advance, since devices embed
built-in applications. Contrary to computers or smartphones, new built-in applications. Contrary to computers or smartphones, new
applications cannot be easily installed. applications cannot be easily installed.
The Static Context Header Compression (SCHC) is defined for this The Static Context Header Compression (SCHC) is defined for this
environment. SCHC uses a context where header information is kept in environment. SCHC uses a context where header information is kept in
the header format order. This context is static (the values on the the header format order. This context is static (the values on the
header fields do not change over time) avoiding complex header fields do not change over time) avoiding complex
resynchronization mechanisms, incompatible with LPWAN resynchronization mechanisms, incompatible with LPWAN
characteristics. In most of the cases, IPv6/UDP headers are reduced characteristics. In most of the cases, IPv6/UDP headers are reduced
to a small context identifier. to a small context identifier.
The SCHC header compression mechanism is independent of the specific The SCHC header compression mechanism is independent from the
LPWAN technology over which it will be used. specific LPWAN technology over which it will be used.
LPWAN technologies are also characterized, among others, by a very LPWAN technologies are also characterized, among others, by a very
reduced data unit and/or payload size [I-D.ietf-lpwan-overview]. reduced data unit and/or payload size [I-D.ietf-lpwan-overview].
However, some of these technologies do not support layer two However, some of these technologies do not support layer two
fragmentation, therefore the only option for these to support the fragmentation, therefore the only option for them to support the IPv6
IPv6 MTU requirement of 1280 bytes [RFC2460] is the use of a MTU requirement of 1280 bytes [RFC2460] is the use of a fragmentation
fragmentation protocol at the adaptation layer below IPv6. This protocol at the adaptation layer below IPv6. This draft defines also
draft defines also a fragmentation functionality to support the IPv6 a fragmentation functionality to support the IPv6 MTU requirements
MTU requirements over LPWAN technologies. Such functionality has over LPWAN technologies. Such functionality has been designed under
been designed under the assumption that data unit reordering will not the assumption that data unit reordering will not happen between the
happen between the entity performing fragmentation and the entity entity performing fragmentation and the entity performing reassembly.
performing reassembly.
2. LPWAN Architecture 2. LPWAN Architecture
LPWAN technologies have similar architectures but different LPWAN technologies have similar architectures but different
terminology. We can identify different types of entities in a terminology. We can identify different types of entities in a
typical LPWAN network, see Figure 1: typical LPWAN network, see Figure 1:
o Devices (Dev) are the end-devices or hosts (e.g. sensors, o Devices (Dev) are the end-devices or hosts (e.g. sensors,
actuators, etc.). There can be a high density of devices per radio actuators, etc.). There can be a high density of devices per radio
gateway. gateway.
o The Radio Gateway (RG), which is the end point of the constrained o The Radio Gateway (RG), which is the end point of the constrained
link. link.
o The Network Gateway (NGW) is the interconnection node between the o The Network Gateway (NGW) is the interconnection node between the
Radio Gateway and the Internet. Radio Gateway and the Internet.
o LPWAN-AAA Server, which controls the user authentication, the o LPWAN-AAA Server, which controls the user authentication and the
applications. We use the term LPWAN-AAA server because we are not applications. We use the term LPWAN-AAA server because we are not
assuming that this entity speaks RADIUS or Diameter as many/most AAA assuming that this entity speaks RADIUS or Diameter as many/most AAA
servers do, but equally we don't want to rule that out, as the servers do, but equally we don't want to rule that out, as the
functionality will be similar. functionality will be similar.
o Application Server (App) o Application Server (App)
+------+ +------+
() () () | |LPWAN-| () () () | |LPWAN-|
() () () () / \ +---------+ | AAA | () () () () / \ +---------+ | AAA |
() () () () () () / \=======| ^ |====|Server| +-----------+ () () () () () () / \=====| ^ |===|Server| +-----------+
() () () | | <--|--> | +------+ |APPLICATION| () () () | | <--|--> | +------+ |APPLICATION|
() () () () / \============| v |==============| (App) | () () () () / \==========| v |=============| (App) |
() () () / \ +---------+ +-----------+ () () () / \ +---------+ +-----------+
Dev Radio Gateways NGW Dev Radio Gateways NGW
Figure 1: LPWAN Architecture Figure 1: LPWAN Architecture
3. Terminology 3. Terminology
This section defines the terminology and acronyms used in this This section defines the terminology and acronyms used in this
document. document.
o App: LPWAN Application. An application sending/receiving IPv6
packets to/from the Device.
o APP-IID: Application Interface Identifier. Second part of the
IPv6 address to identify the application interface
o Bi: Bidirectional, it can be used in both senses
o CDA: Compression/Decompression Action. An action that is perfomed o CDA: Compression/Decompression Action. An action that is perfomed
for both functionnalities to compress a header field or to recover for both functionnalities to compress a header field or to recover
its original value in the decompression phase. its original value in the decompression phase.
o Context: A set of rules used to compress/decompress headers o Context: A set of rules used to compress/decompress headers
o Dev: Device. Node connected to the LPWAN. A Dev may implement o Dev: Device. Node connected to the LPWAN. A Dev may implement
SCHC. SCHC.
o App: LPWAN Application. An application sending/receiving IPv6 o Dev-IID: Device Interface Identifier. Second part of the IPv6
packets to/from the Device. address to identify the device interface
o SCHC C/D: LPWAN Compressor/Decompressor. A process in the network
to achieve compression/decompressing headers. SCHC C/D uses SCHC
rules to perform compression and decompression.
o MO: Matching Operator. An operator used to match a value
contained in a header field with a value contained in a Rule.
o Rule: A set of header field values.
o Rule ID: An identifier for a rule, SCHC C/D and Dev share the same o DI: Direction Indicator is a differentiator for matching in order
Rule ID for a specific flow. to be able to have different values for both sides.
o TV: Target value. A value contained in the Rule that will be o Dw: Down Link direction for compression, from SCHC C/D to Dev
matched with the value of a header field.
o FID: Field Indentifier is an index to describe the header fields o FID: Field Indentifier is an index to describe the header fields
in the Rule in the Rule
o FP: Field Position is a list of possible correct values that a o FP: Field Position is a list of possible correct values that a
field may use field may use
o DI: Direction Indicator is a differentiator for matching in order
to be able to have different values for both sides.
o IID: Interface Identifier. See the IPv6 addressing architecture o IID: Interface Identifier. See the IPv6 addressing architecture
[RFC7136] [RFC7136]
o Dev-IID: Device Interface Identifier. Second part of the IPv6 o MO: Matching Operator. An operator used to match a value
address to identify the device interface contained in a header field with a value contained in a Rule.
o APP-IID: Application Interface Identifier. Second part of the o Rule: A set of header field values.
IPv6 address to identify the application interface
o Dw: Down Link direction for compression, from SCHC C/D to Dev o Rule ID: An identifier for a rule, SCHC C/D and Dev share the same
Rule ID for a specific flow.
o Up: Up Link direction for compression, from Dev to SCHC C/D o SCHC C/D: Static Context Header Compression Compressor/
Decompressor. A process in the network to achieve compression/
decompressing headers. SCHC C/D uses SCHC rules to perform
compression and decompression.
o Bi: Bidirectional, it can be used in both senses o TV: Target value. A value contained in the Rule that will be
matched with the value of a header field.
o Up: Up Link direction for compression, from Dev to SCHC C/D
4. Static Context Header Compression 4. Static Context Header Compression
Static Context Header Compression (SCHC) avoids context Static Context Header Compression (SCHC) avoids context
synchronization, which is the most bandwidth-consuming operation in synchronization, which is the most bandwidth-consuming operation in
other header compression mechanisms such as RoHC [RFC5795]. Based on other header compression mechanisms such as RoHC [RFC5795]. Based on
the fact that the nature of data flows is highly predictable in LPWAN the fact that the nature of data flows is highly predictable in LPWAN
networks, a static context may be stored on the Device (Dev). The networks, some static contexts may be stored on the Device (Dev).
context must be stored in both ends, and it can either be learned by The contexts must be stored in both ends, and it can either be
a provisioning protocol or by out of band means or it can be pre- learned by a provisioning protocol or by out of band means or it can
provosioned, etc. The way the context is learned on both sides is be pre-provosioned, etc. The way the context is learned on both
out of the scope of this document. sides is out of the scope of this document.
Dev App Dev App
+---------------+ +---------------+ +--------------+ +--------------+
| APP1 APP2 APP3| |APP1 APP2 APP3| |APP1 APP2 APP3| |APP1 APP2 APP3|
| | | | | | | |
| UDP | | UDP | | UDP | | UDP |
| IPv6 | | IPv6 | | IPv6 | | IPv6 |
| | | | | | | |
| SCHC C/D | | | | SCHC C/D | | |
| (context) | | | | (context) | | |
+--------+------+ +-------+-------+ +-------+------+ +-------+------+
| +--+ +----+ +---------+ . | +--+ +----+ +---------+ .
+~~ |RG| === |NGW | === |SCHC C/D |... Internet ... +~~ |RG| === |NGW | === |SCHC C/D |... Internet ..
+--+ +----+ |(context)| +--+ +----+ |(context)|
+---------+ +---------+
Figure 2: Architecture Figure 2: Architecture
Figure 2 based on [I-D.ietf-lpwan-overview] terminology represents Figure 2 represents the architecture for compression/decompression,
the architecture for compression/decompression. The Device is it is based on [I-D.ietf-lpwan-overview] terminology. The Device is
sending applications flows using IPv6 or IPv6/UDP protocols. These sending applications flows using IPv6 or IPv6/UDP protocols. These
flows are compressed by an Static Context Header Compression flows are compressed by an Static Context Header Compression
Compressor/Decompressor (SCHC C/D) to reduce headers size. Resulting Compressor/Decompressor (SCHC C/D) to reduce headers size. Resulting
information is sent on a layer two (L2) frame to the LPWAN Radio information is sent on a layer two (L2) frame to a LPWAN Radio
Network to a Radio Gateway (RG) which forwards the frame to a Network Network (RG) which forwards the frame to a Network Gateway (NGW).
Gateway (NGW). The NGW sends the data to a SCHC C/D for The NGW sends the data to a SCHC C/D for decompression which shares
decompression which shares the same rules with the Dev. The SCHC C/D the same rules with the Dev. The SCHC C/D can be located on the
can be located on the Network Gateway (NGW) or in another place as Network Gateway (NGW) or in another place as long as a tunnel is
long as a tunnel is established between the NGW and the SCHC C/D. established between the NGW and the SCHC C/D. The SCHC C/D in both
SCHC C/D in both sides must share the same set of Rules. After sides must share the same set of Rules. After decompression, the
decompression, the packet can be sent on the Internet to one or packet can be sent on the Internet to one or several LPWAN
several LPWAN Application Servers (App). Application Servers (App).
The SCHC C/D process is bidirectional, so the same principles can be The SCHC C/D process is bidirectional, so the same principles can be
applied in the other direction. applied in the other direction.
4.1. SCHC Rules 4.1. SCHC Rules
The main idea of the SCHC compression scheme is to send the Rule id The main idea of the SCHC compression scheme is to send the Rule id
to the other end that match as much as possible the original packet to the other end instead of sending known field values. This Rule id
values instead of sending known field values. When a value is known identifies a rule that match as much as possible the original packet
by both ends, it is not necessary sent through the LPWAN network. values. When a value is known by both ends, it is not necessary sent
through the LPWAN network.
The context contains a list of rules (cf. Figure 3). Each Rule The context contains a list of rules (cf. Figure 3). Each Rule
contains itself a list of fields descriptions composed of a field contains itself a list of fields descriptions composed of a field
identifier (FID), a field position (FP), a direction indicator (DI), identifier (FID), a field position (FP), a direction indicator (DI),
a target value (TV), a matching operator (MO) and a Compression/ a target value (TV), a matching operator (MO) and a Compression/
Decompression Action (CDA). Decompression Action (CDA).
/--------------------------------------------------------------\ /--------------------------------------------------------------\
| Rule N | | Rule N |
/--------------------------------------------------------------\| /--------------------------------------------------------------\|
skipping to change at page 8, line 31 skipping to change at page 8, line 31
\--------------------------------------------------------------/ \--------------------------------------------------------------/
Figure 3: Compression/Decompression Context Figure 3: Compression/Decompression Context
The Rule does not describe the original packet format which must be The Rule does not describe the original packet format which must be
known from the compressor/decompressor. The rule just describes the known from the compressor/decompressor. The rule just describes the
compression/decompression behavior for the header fields. In the compression/decompression behavior for the header fields. In the
rule, the description of the header field must be performed in the rule, the description of the header field must be performed in the
format packet order. format packet order.
The Rule describes also the compressed header fields which are The Rule also describes the compressed header fields which are
transmitted regarding their position in the rule which is used for transmitted regarding their position in the rule which is used for
data serialization on the compressor side and data deserialization on data serialization on the compressor side and data deserialization on
the decompressor side. the decompressor side.
The Context describes the header fields and its values with the The Context describes the header fields and its values with the
following entries: following entries:
o A Field ID (FID) is a unique value to define the header field. o A Field ID (FID) is a unique value to define the header field.
o A Field Position (FP) indicating if several instances of the field o A Field Position (FP) indicating if several instances of the field
skipping to change at page 9, line 49 skipping to change at page 9, line 49
4.3. Packet processing 4.3. Packet processing
The compression/decompression process follows several steps: The compression/decompression process follows several steps:
o compression Rule selection: The goal is to identify which Rule(s) o compression Rule selection: The goal is to identify which Rule(s)
will be used to compress the packet's headers. When doing will be used to compress the packet's headers. When doing
compression from Dw to Up the SCHC C/D needs to find the correct compression from Dw to Up the SCHC C/D needs to find the correct
Rule to use by identifying its Dev-ID and the Rule-ID. In the Up Rule to use by identifying its Dev-ID and the Rule-ID. In the Up
situation only the Rule-ID is used. The next step is to choose situation only the Rule-ID is used. The next step is to choose
the fields by their direction, using the direction indicator (DI), the fields by their direction, using the direction indicator (DI),
so the fields that does not correspond to the appropiated DI will so the fields that do not correspond to the appropiated DI will be
be excluded. Next, then fields are identified according to their excluded. Next, then the fields are identified according to their
field identifier (FID) and field position (FP). If the field field identifier (FID) and field position (FP). If the field
position does not correspond then the Rule is not use and the SCHC position does not correspond then the Rule is not use and the SCHC
take next Rule. Once the DI and the FP correspond to the header take next Rule. Once the DI and the FP correspond to the header
information, each field's value is then compared to the information, each field's value is then compared to the
corresponding target value (TV) stored in the Rule for that corresponding target value (TV) stored in the Rule for that
specific field using the matching operator (MO). If all the specific field using the matching operator (MO). If all the
fields in the packet's header satisfy all the matching operators fields in the packet's header satisfy all the matching operators
(MOs) of a Rule (i.e. all results are True), the fields of the (MOs) of a Rule (i.e. all results are True), the fields of the
header are then processed according to the Compression/ header are then processed according to the Compression/
Decompession Actions (CDAs) and a compressed header is obtained. Decompession Actions (CDAs) and a compressed header is obtained.
Otherwise the next rule is tested. If no eligible rule is found, Otherwise the next rule is tested. If no eligible rule is found,
then the header must be sent without compression, in which case then the header must be sent without compression, in which case
the fragmentation process must be required. the fragmentation process must be required.
o sending: The Rule ID is sent to the other end followed by o sending: The Rule ID is sent to the other end followed by
information resulting from the compression of header fields. This information resulting from the compression of header fields,
information is sent in the order expressed in the Rule for the directly followed by the payload. The product of field
compression is sent in the order expressed in the Rule for the
matching fields. The way the Rule ID is sent depends on the matching fields. The way the Rule ID is sent depends on the
specific LPWAN layer two technology and will be specified in a specific LPWAN layer two technology and will be specified in a
specific document, and is out of the scope of this document. For specific document, and is out of the scope of this document. For
example, it can be either included in a Layer 2 header or sent in example, it can be either included in a Layer 2 header or sent in
the first byte of the L2 payload. (cf. Figure 4). the first byte of the L2 payload. (cf. Figure 4).
o decompression: In both directions, The receiver identifies the o decompression: In both directions, The receiver identifies the
sender through its device-id (e.g. MAC address) and selects the sender through its device-id (e.g. MAC address) and selects the
appropriate Rule through the Rule ID. This Rule gives the appropriate Rule through the Rule ID. This Rule gives the
compressed header format and associates these values to header compressed header format and associates these values to the header
fields. It applies the CDA action to reconstruct the original fields. It applies the CDA action to reconstruct the original
header fields. The CDA application order can be different of the header fields. The CDA application order can be different of the
order given by the Rule. For instance Compute-* may be applied at order given by the Rule. For instance Compute-* may be applied at
end, after the other CDAs. end, after the other CDAs.
+--- ... ---+-------------- ... --------------+ If after using SCHC compression and adding the payload to the L2
| Rule ID |Compressed Hdr Fields information| frame the datagram is not multiple of 8 bits, padding may be used.
+--- ... ---+-------------- ... --------------+
+--- ... ---+-------------- ... --------------+-------------+--...--+
| Rule ID |Compressed Hdr Fields information| payload |padding|
+--- ... ---+-------------- ... --------------+-------------+--...--+
Figure 4: LPWAN Compressed Format Packet Figure 4: LPWAN Compressed Format Packet
5. Matching operators 5. Matching operators
Matching Operators (MOs) are functions used by both SCHC C/D Matching Operators (MOs) are functions used by both SCHC C/D
endpoints involved in the header compression/decompression. They are endpoints involved in the header compression/decompression. They are
not typed and can be applied indifferently to integer, string or any not typed and can be applied indifferently to integer, string or any
other data type. The result of the operation can either be True or other data type. The result of the operation can either be True or
False. MOs are defined as follows: False. MOs are defined as follows:
skipping to change at page 11, line 21 skipping to change at page 11, line 24
indicating the number of bits, to proceed to the matching. indicating the number of bits, to proceed to the matching.
o match-mapping: The goal of mapping-sent is to reduce the size of a o match-mapping: The goal of mapping-sent is to reduce the size of a
field by allocating a shorter value. The Target Value contains a field by allocating a shorter value. The Target Value contains a
list of values. Each value is idenfied by a short ID (or index). list of values. Each value is idenfied by a short ID (or index).
This operator matches if a field value is equal to one of those This operator matches if a field value is equal to one of those
target values. target values.
6. Compression Decompression Actions (CDA) 6. Compression Decompression Actions (CDA)
The Compression Decompression Actions (CDA) describes the action The Compression Decompression Action (CDA) describes the actions
taken during the compression of headers fields, and inversely, the taken during the compression of headers fields, and inversely, the
action taken by the decompressor to restore the original value. action taken by the decompressor to restore the original value.
/--------------------+-------------+----------------------------\ /--------------------+-------------+----------------------------\
| Action | Compression | Decompression | | Action | Compression | Decompression |
| | | | | | | |
+--------------------+-------------+----------------------------+ +--------------------+-------------+----------------------------+
|not-sent |elided |use value stored in ctxt | |not-sent |elided |use value stored in ctxt |
|value-sent |send |build from received value | |value-sent |send |build from received value |
|mapping-sent |send index |value from index on a table | |mapping-sent |send index |value from index on a table |
skipping to change at page 12, line 13 skipping to change at page 12, line 15
rule or may be sent with the compressed header. rule or may be sent with the compressed header.
If the field is identified as variable, then its size must be sent If the field is identified as variable, then its size must be sent
first using the following coding: first using the following coding:
o If the size is between 0 and 14 bytes it is sent using 4 bits. o If the size is between 0 and 14 bytes it is sent using 4 bits.
o For values between 15 and 255, the first 4 bit sent are set to 1 o For values between 15 and 255, the first 4 bit sent are set to 1
and the size is sent using 8 bits. and the size is sent using 8 bits.
o For higher value, the first 12 bytes are set to 1 and the size is o For higher value, the first 12 bits are set to 1 and the size is
sent on 2 bytes. sent on 2 bytes.
6.1. not-sent CDA 6.1. not-sent CDA
Not-sent function is generally used when the field value is specified Not-sent function is generally used when the field value is specified
in the rule and therefore known by the both Compressor and in the rule and therefore known by the both Compressor and
Decompressor. This action is generally used with the "equal" MO. If Decompressor. This action is generally used with the "equal" MO. If
MO is "ignore", there is a risk to have a decompressed field value MO is "ignore", there is a risk to have a decompressed field value
different from the compressed field. different from the compressed field.
skipping to change at page 12, line 40 skipping to change at page 12, line 42
6.2. value-sent CDA 6.2. value-sent CDA
The value-sent action is generally used when the field value is not The value-sent action is generally used when the field value is not
known by both Compressor and Decompressor. The value is sent in the known by both Compressor and Decompressor. The value is sent in the
compressed message header. Both Compressor and Decompressor must compressed message header. Both Compressor and Decompressor must
know the size of the field, either implicitly (the size is known by know the size of the field, either implicitly (the size is known by
both sides) or explicitly in the compressed header field by both sides) or explicitly in the compressed header field by
indicating the length. This function is generally used with the indicating the length. This function is generally used with the
"ignore" MO. "ignore" MO.
The compressor sends the Target Value stored on the rule in the
compressed header message. The decompressor restores the field value
with the one received from the LPWAN
6.3. mapping-sent 6.3. mapping-sent
mapping-sent is used to send a smaller index associated to the list mapping-sent is used to send a smaller index associated to the list
of values in the Target Value. This function is used together with of values in the Target Value. This function is used together with
the "match-mapping" MO. the "match-mapping" MO.
The compressor looks in the TV to find the field value and send the The compressor looks in the TV to find the field value and send the
corresponding index. The decompressor uses this index to restore the corresponding index. The decompressor uses this index to restore the
field value. field value.
The number of bits sent is the minimal size to code all the possible The number of bits sent is the minimal size to code all the possible
indexes. indexes.
6.4. LSB CDA 6.4. LSB CDA
LSB action is used to avoid sendind the known part of the packet LSB action is used to avoid sending the known part of the packet
field header to the other end. This action is used together with the field header to the other end. This action is used together with the
"MSB" MO. A length can be specified in the rule to indicate how many "MSB" MO. A length can be specified in the rule to indicate how many
bits have to be sent. If not length is specified, the number of bits bits have to be sent. If not length is specified, the number of bits
sent are the field length minus the bits length specified in the MSB sent are the field length minus the bits length specified in the MSB
MO. MO.
The compressor sends the "length" Least Significant Bits. The The compressor sends the "length" Least Significant Bits. The
decompressor combines the value received with the Target Value. decompressor combines the value received with the Target Value.
If this action is made on a variable length field, the remaning size If this action is made on a variable length field, the remaning size
in byte has to be sent before. in byte has to be sent before.
6.5. DEViid, APPiid CDA 6.5. DEViid, APPiid CDA
These functions are used to process respectively the Dev and the App These functions are used to process respectively the Dev and the App
Interface Identifiers (Deviid and Appiid) of the IPv6 addresses. Interface Identifiers (Deviid and Appiid) of the IPv6 addresses.
Appiid CDA is less common, since current LPWAN technologies frames Appiid CDA is less common, since current LPWAN technologies frames
contain a single address. contain a single address.
The IID value can be computed from the Device ID present in the Layer The IID value may be computed from the Device ID present in the Layer
2 header. The computation is specific for each LPWAN technology and 2 header. The computation is specific for each LPWAN technology and
depends on the Device ID size. may depend on the Device ID size.
In the downstream direction, these CDA are used to determine the L2 In the downstream direction, these CDA may be used to determine the
addresses used by the LPWAN. L2 addresses used by the LPWAN.
6.6. Compute-* 6.6. Compute-*
Thes classes of functions are used by the decompressor to compute the These classes of functions are used by the decompressor to compute
compressed field value based on received information. Compressed the compressed field value based on received information. Compressed
fields are elided during compression and reconstructed during fields are elided during compression and reconstructed during
decompression. decompression.
o compute-length: compute the length assigned to this field. For o compute-length: compute the length assigned to this field. For
instance, regarding the field ID, this CDA may be used to compute instance, regarding the field ID, this CDA may be used to compute
IPv6 length or UDP length. IPv6 length or UDP length.
o compute-checksum: compute a checksum from the information already o compute-checksum: compute a checksum from the information already
received by the SCHC C/D. This field may be used to compute UDP received by the SCHC C/D. This field may be used to compute UDP
checksum. checksum.
skipping to change at page 16, line 41 skipping to change at page 16, line 41
7.7.2. IPv6 source and destination IID 7.7.2. IPv6 source and destination IID
If the DEV or APP IID are based on an LPWAN address, then the IID can If the DEV or APP IID are based on an LPWAN address, then the IID can
be reconstructed with information coming from the LPWAN header. In be reconstructed with information coming from the LPWAN header. In
that case, the TV is not set, the MO is set to "ignore" and the CDA that case, the TV is not set, the MO is set to "ignore" and the CDA
is set to "DEViid" or "APPiid". Note that the LPWAN technology is is set to "DEViid" or "APPiid". Note that the LPWAN technology is
generally carrying a single device identifier corresponding to the generally carrying a single device identifier corresponding to the
DEV. The SCHC C/D may also not be aware of these values. DEV. The SCHC C/D may also not be aware of these values.
If the DEV address has a static value that is not derivated from the If the DEV address has a static value that is not derivated from an
EUI-64, then TV contains the value, the MO operator is set to "equal" IEEE EUI-64, then TV contains the actual Dev address value, the MO
and the CDA is set to "not-sent". operator is set to "equal" and the CDA is set to "not-sent".
If several IIDs are possible, then the TV contains the list of If several IIDs are possible, then the TV contains the list of
possible IIDs, the MO is set to "match-mapping" and the CDA is set to possible IIDs, the MO is set to "match-mapping" and the CDA is set to
"mapping-sent". "mapping-sent".
Otherwise the value variation of the IID may be reduced to few bytes. Otherwise the value variation of the IID may be reduced to few bytes.
In that case, the TV is set to the stable part of the IID, the MO is In that case, the TV is set to the stable part of the IID, the MO is
set to MSB and the CDA is set to LSB. set to MSB and the CDA is set to LSB.
Finally, the IID can be sent on the LPWAN. In that case, the TV is Finally, the IID can be sent on the LPWAN. In that case, the TV is
skipping to change at page 21, line 18 skipping to change at page 21, line 18
The second and third rules use global addresses. The way the Dev The second and third rules use global addresses. The way the Dev
learns the prefix is not in the scope of the document. learns the prefix is not in the scope of the document.
The third rule compresses port numbers to 4 bits. The third rule compresses port numbers to 4 bits.
9. Fragmentation 9. Fragmentation
9.1. Overview 9.1. Overview
Fragmentation support in LPWAN is mandatory when the underlying LPWAN Fragmentation supported in LPWAN is mandatory when the underlying
technology is not capable of fulfilling the IPv6 MTU requirement. LPWAN technology is not capable of fulfilling the IPv6 MTU
Fragmentation is used if, after SCHC header compression, the size of requirement. Fragmentation is used if, after SCHC header
the resulting IPv6 packet is larger than the L2 data unit maximum compression, the size of the resulting IPv6 packet is larger than the
payload. Fragmentation is also used if SCHC header compression has L2 data unit maximum payload. Fragmentation is also used if SCHC
not been able to compress an IPv6 packet that is larger than the L2 header compression has not been able to compress an IPv6 packet that
data unit maximum payload. In LPWAN technologies, the L2 data unit is larger than the L2 data unit maximum payload. In LPWAN
size typically varies from tens to hundreds of bytes. If the entire technologies, the L2 data unit size typically varies from tens to
IPv6 datagram fits within a single L2 data unit, the fragmentation hundreds of bytes. If the entire IPv6 datagram fits within a single
mechanism is not used and the packet is sent unfragmented. L2 data unit, the fragmentation mechanism is not used and the packet
is sent unfragmented.
If the datagram does not fit within a single L2 data unit, it SHALL If the datagram does not fit within a single L2 data unit, it SHALL
be broken into fragments. be broken into fragments.
Moreover, LPWAN technologies impose some strict limitations on Moreover, LPWAN technologies impose some strict limitations on
traffic; therefore it is desirable to enable optional fragment traffic; therefore it is desirable to enable optional fragment
retransmission, while a single fragment loss should not lead to retransmission, while a single fragment loss should not lead to
retransmitting the full IPv6 datagram. On the other hand, in order retransmitting the full IPv6 datagram. On the other hand, in order
to preserve energy, Devices are sleeping most of the time and may to preserve energy, Devices are sleeping most of the time and may
receive data during a short period of time after transmission. In receive data during a short period of time after transmission. In
order to adapt to the capabilities of various LPWAN technologies, order to adapt to the capabilities of various LPWAN technologies,
skipping to change at page 22, line 33 skipping to change at page 22, line 33
on top of an L2 LPWAN technology with symmetric characteristics for on top of an L2 LPWAN technology with symmetric characteristics for
uplink and downlink). uplink and downlink).
In the No ACK option, the receiver MUST NOT issue acknowledgments In the No ACK option, the receiver MUST NOT issue acknowledgments
(ACK). (ACK).
In Window mode - ACK "always", an ACK is transmitted by the fragment In Window mode - ACK "always", an ACK is transmitted by the fragment
receiver after a window of fragments have been sent. A window of receiver after a window of fragments have been sent. A window of
fragments is a subset of the full set of fragments needed to carry an fragments is a subset of the full set of fragments needed to carry an
IPv6 packet. In this mode, the ACK informs the sender about received IPv6 packet. In this mode, the ACK informs the sender about received
and/or missing fragments from the window of fragments. and/or missing fragments from the window of fragments. Upon receipt
of an ACK that informs about any lost fragments, the sender
retransmits the lost fragments, as long as a maximum of
MAX_FRAG_RETRIES is not exceeded for each one of those fragments.
The default value of MAX_FRAG_RETRIES is not stated in this document,
and it is expected to be defined in other documents (e.g. technology-
specific profiles).
In Window mode - ACK on error, an ACK is transmitted by the fragment In Window mode - ACK on error, an ACK is transmitted by the fragment
receiver after a window of fragments have been sent, only if at least receiver after a window of fragments have been sent, only if at least
one of the fragments in the window has been lost. In this mode, the one of the fragments in the window has been lost. In this mode, the
ACK informs the sender about received and/or missing fragments from ACK informs the sender about received and/or missing fragments from
the window of fragments. the window of fragments. Upon receipt of an ACK that informs about
any lost fragments, the sender retransmits the lost fragments. The
In Window mode, upon receipt of an ACK that informs about any lost maximum number of ACKs to be sent by the receiver for a specific
fragments, the sender retransmits the lost fragments. The maximum window, denoted MAX_ACKS_PER_WINDOW, is not stated in this document,
number of ACKs to be sent by the receiver for a specific window, and it is expected to be defined in other documents (e.g. technology-
denoted MAX_ACKS_PER_WINDOW, is not stated in this document, and it
is expected to be defined in other documents (e.g. technology-
specific profiles). specific profiles).
This document does not make any decision as to which fragment This document does not make any decision as to which fragment
delivery reliability option(s) need to be supported over a specific delivery reliability option(s) need to be supported over a specific
LPWAN technology. LPWAN technology.
Examples of the different reliability options described are provided Examples of the different reliability options described are provided
in Appendix A. in Appendix A.
9.3. Reliability options: discussion 9.3. Reliability options: discussion
skipping to change at page 25, line 28 skipping to change at page 25, line 34
<------------ R ----------> <------------ R ---------->
<--T--> 1 <--N--> <--T--> 1 <--N-->
+-- ... --+- ... -+-+- ... -+ +-- ... --+- ... -+-+- ... -+
| Rule ID | DTag |W| CFN | | Rule ID | DTag |W| CFN |
+-- ... --+- ... -+-+- ... -+ +-- ... --+- ... -+-+- ... -+
Figure 10: Fragmentation Header for Fragments except the Last One, Figure 10: Fragmentation Header for Fragments except the Last One,
Window mode Window mode
The last fragment of an IPv6 datagram SHALL contain a fragmentation In the No ACK option, the last fragment of an IPv6 datagram SHALL
header that conforms to the format shown in Figure 11. The total contain a fragmentation header that conforms to the format shown in
size of this fragmentation header is R+M bits. Figure 11. The total size of this fragmentation header is R+M bits.
<------------- R ------------> <------------- R ------------>
<- T -> <- N -> <---- M -----> <- T -> <- N -> <---- M ----->
+---- ... ---+- ... -+- ... -+---- ... ----+ +---- ... ---+- ... -+- ... -+---- ... ----+
| Rule ID | DTag | 11..1 | MIC | | Rule ID | DTag | 11..1 | MIC |
+---- ... ---+- ... -+- ... -+---- ... ----+ +---- ... ---+- ... -+- ... -+---- ... ----+
Figure 11: Fragmentation Header for the Last Fragment Figure 11: Fragmentation Header for the Last Fragment, No ACK option
o Rule ID: This field has a size of R - T - N - 1 bits in all In any of the Window modes, the last fragment of an IPv6 datagram
fragments that are not the last one, when Window mode is used. In SHALL contain a fragmentation header that conforms to the format
all other fragments, the Rule ID field has a size of R - T - N shown in Figure 12. The total size of this fragmentation header is
bits. R+M bits.
<------------ R ------------>
<- T -> 1 <- N -> <---- M ----->
+-- ... --+- ... -+-+- ... -+---- ... ----+
| Rule ID | DTag |W| 11..1 | MIC |
+-- ... --+- ... -+-+- ... -+---- ... ----+
Figure 12: Fragmentation Header for the Last Fragment, Window mode
o Rule ID: This field has a size of R - T - N - 1 bits when Window
mode is used. In No ACK mode, the Rule ID field has a size of R -
T - N bits.
o DTag: The size of the DTag field is T bits, which may be set to a o DTag: The size of the DTag field is T bits, which may be set to a
value greater than or equal to 0 bits. The DTag field in all value greater than or equal to 0 bits. The DTag field in all
fragments that carry the same IPv6 datagram MUST be set to the fragments that carry the same IPv6 datagram MUST be set to the
same value. DTag MUST be set sequentially increasing from 0 to same value. DTag MUST be set sequentially increasing from 0 to
2^T - 1, and MUST wrap back from 2^T - 1 to 0. 2^T - 1, and MUST wrap back from 2^T - 1 to 0.
o CFN: This field is an unsigned integer, with a size of N bits, o CFN: This field is an unsigned integer, with a size of N bits,
that carries the CFN of the fragment. In the No ACK option, N=1. that carries the CFN of the fragment. In the No ACK option, N=1.
For the rest of options, N equal to or greater than 3 is For the rest of options, N equal to or greater than 3 is
skipping to change at page 26, line 40 skipping to change at page 27, line 11
o MIC: This field, which has a size of M bits, carries the MIC for o MIC: This field, which has a size of M bits, carries the MIC for
the IPv6 packet. the IPv6 packet.
The values for R, N, T and M are not specified in this document, and The values for R, N, T and M are not specified in this document, and
have to be determined in other documents (e.g. technology-specific have to be determined in other documents (e.g. technology-specific
profile documents). profile documents).
9.5.3. ACK format 9.5.3. ACK format
The format of an ACK is shown in Figure 12: The format of an ACK is shown in Figure 13:
<-------- R -------> <-------- R ------->
<- T -> 1 <- T -> 1
+---- ... --+-... -+-+----- ... ---+ +---- ... --+-... -+-+----- ... ---+
| Rule ID | DTag |W| bitmap | | Rule ID | DTag |W| bitmap |
+---- ... --+-... -+-+----- ... ---+ +---- ... --+-... -+-+----- ... ---+
Figure 12: Format of an ACK Figure 13: Format of an ACK
Rule ID: In all ACKs, Rule ID has a size of R - T - 1 bits. Rule ID: In all ACKs, Rule ID has a size of R - T - 1 bits.
DTag: DTag has a size of T bits. DTag carries the same value as the DTag: DTag has a size of T bits. DTag carries the same value as the
DTag field in the fragments carrying the IPv6 datagram for which this DTag field in the fragments carrying the IPv6 datagram for which this
ACK is intended. ACK is intended.
W: This field has a size of 1 bit. In all ACKs, the W bit carries W: This field has a size of 1 bit. In all ACKs, the W bit carries
the same value as the W bit carried by the fragments whose reception the same value as the W bit carried by the fragments whose reception
is being positively or negatively acknowledged by the ACK. is being positively or negatively acknowledged by the ACK.
skipping to change at page 27, line 26 skipping to change at page 27, line 44
0 or Ceiling(Number_of_Fragments/8) octets, where Number_of_Fragments 0 or Ceiling(Number_of_Fragments/8) octets, where Number_of_Fragments
denotes the number of fragments of a window. The bitmap is a denotes the number of fragments of a window. The bitmap is a
sequence of bits, where the n-th bit signals whether the n-th sequence of bits, where the n-th bit signals whether the n-th
fragment transmitted in the current window has been correctly fragment transmitted in the current window has been correctly
received (n-th bit set to 1) or not (n-th bit set to 0). Remaining received (n-th bit set to 1) or not (n-th bit set to 0). Remaining
bits with bit order greater than the number of fragments sent (as bits with bit order greater than the number of fragments sent (as
determined by the receiver) are set to 0, except for the last bit in determined by the receiver) are set to 0, except for the last bit in
the bitmap, which is set to 1 if the last fragment of the window has the bitmap, which is set to 1 if the last fragment of the window has
been correctly received, and 0 otherwise. Feedback on reception of been correctly received, and 0 otherwise. Feedback on reception of
the fragment with CFN = 2^N - 1 (last fragment carrying an IPv6 the fragment with CFN = 2^N - 1 (last fragment carrying an IPv6
packet) is only given by the last bit of the corresponding window. packet) is only given by the last bit of the corresponding bitmap.
Absence of the bitmap in an ACK confirms correct reception of all Absence of the bitmap in an ACK confirms correct reception of all
fragments to be acknowledged by means of the ACK. fragments to be acknowledged by means of the ACK.
Figure 13 shows an example of an ACK (N=3), where the bitmap Figure 14 shows an example of an ACK (N=3), where the bitmap
indicates that the second and the fifth fragments have not been indicates that the second and the fifth fragments have not been
correctly received. correctly received.
<------- R -------> <------- R ------->
<- T -> 0 1 2 3 4 5 6 7 <- T -> 0 1 2 3 4 5 6 7
+---- ... --+-... -+-+-+-+-+-+-+-+-+-+ +---- ... --+-... -+-+-+-+-+-+-+-+-+-+
| Rule ID | DTag |W|1|0|1|1|0|1|1|1| | Rule ID | DTag |W|1|0|1|1|0|1|1|1|
+---- ... --+-... -+-+-+-+-+-+-+-+-+-+ +---- ... --+-... -+-+-+-+-+-+-+-+-+-+
Figure 13: Example of the bitmap in an ACK (in Window mode, for N=3) Figure 14: Example of the bitmap in an ACK (in Window mode, for N=3)
Figure 14 illustrates an ACK without a bitmap. Figure 15 illustrates an ACK without a bitmap.
<------- R -------> <------- R ------->
<- T -> <- T ->
+---- ... --+-... -+-+ +---- ... --+-... -+-+
| Rule ID | DTag |W| | Rule ID | DTag |W|
+---- ... --+-... -+-+ +---- ... --+-... -+-+
Figure 14: Example of an ACK without a bitmap Figure 15: Example of an ACK without a bitmap
Note that, in order to exploit the available L2 payload space to the Note that, in order to exploit the available L2 payload space to the
fullest, a bitmap may have a size smaller than 2^N bits. In that fullest, a bitmap may have a size smaller than 2^N bits. In that
case, the window in use will have a size lower than 2^N-1 fragments. case, the window in use will have a size lower than 2^N-1 fragments.
For example, if the maximum available space for a bitmap is 56 bits, For example, if the maximum available space for a bitmap is 56 bits,
N can be set to 6, and the window size can be set to a maximum of 56 N can be set to 6, and the window size can be set to a maximum of 56
fragments. fragments.
9.6. Baseline mechanism 9.6. Baseline mechanism
The receiver of link fragments SHALL use (1) the sender's L2 source The receiver of link fragments SHALL use (1) the sender's L2 source
address (if present), (2) the destination's L2 address (if present), address (if present), (2) the destination's L2 address (if present),
(3) Rule ID and (4) DTag to identify all the fragments that belong to (3) Rule ID and (4) DTag (the latter, if present) to identify all the
a given IPv6 datagram. The fragment receiver may determine the fragments that belong to a given IPv6 datagram. The fragment
fragment delivery reliability option in use for the fragment based on receiver may determine the fragment delivery reliability option in
the Rule ID field in that fragment. use for the fragment based on the Rule ID field in that fragment.
Upon receipt of a link fragment, the receiver starts constructing the Upon receipt of a link fragment, the receiver starts constructing the
original unfragmented packet. It uses the CFN and the order of original unfragmented packet. It uses the CFN and the order of
arrival of each fragment to determine the location of the individual arrival of each fragment to determine the location of the individual
fragments within the original unfragmented packet. For example, it fragments within the original unfragmented packet. For example, it
may place the data payload of the fragments within a payload datagram may place the data payload of the fragments within a payload datagram
reassembly buffer at the location determined from the CFN and order reassembly buffer at the location determined from the CFN and order
of arrival of the fragments, and the fragment payload sizes. In of arrival of the fragments, and the fragment payload sizes. In
Window mode, the fragment receiver also uses the W bit in the Window mode, the fragment receiver also uses the W bit in the
received fragments. Note that the size of the original, unfragmented received fragments. Note that the size of the original, unfragmented
IPv6 packet cannot be determined from fragmentation headers. IPv6 packet cannot be determined from fragmentation headers.
When Window mode - ACK on error is used, the fragment receiver starts When Window mode - ACK on error is used, the fragment receiver starts
a timer (denoted "ACK on Error Timer") upon reception of the first a timer (denoted "ACK on Error Timer") upon reception of the first
fragment for an IPv6 datagram. The initial value for this timer is fragment for an IPv6 datagram. The initial value for this timer is
not provided by this specification, and is expected to be defined in not provided by this specification, and is expected to be defined in
additional documents. This timer is reset every time that a new additional documents. This timer is reset and restarted every time
fragment carrying data from the same IPv6 datagram is received. In that a new fragment carrying data from the same IPv6 datagram is
Window mode - ACK on error, upon timer expiration, if neither the received. In Window mode - ACK on error, after reception of the last
last fragment of the IPv6 datagram nor the last fragment of the fragment of a window (i.e. the fragment with CFN=0 or CFN=2^N-1), if
current window (i.e. with CFN=0) have been received, an ACK MUST be fragment losses have been detected by the fragment receiver in the
transmitted by the fragment receiver to indicate received and not current window, the fragment receiver MUST transmit an ACK reporting
received fragments for the current window. its available information with regard to sucessfully received and
missing fragments from the current window. Upon expiration of the
"ACK on Error Timer", if the receiver knows that at least one
fragment of the current window has been lost, an ACK MUST be
transmitted by the fragment receiver to report received and not
received fragments for the current window. The "ACK on Error Timer"
is then reset and restarted. In Window mode - ACK on error, the
fragment sender retransmits any lost fragments reported in an ACK.
The maximum number of ACKs to be sent by the receiver for a specific
window, denoted MAX_ACKS_PER_WINDOW, is not stated in this document,
and it is expected to be defined in other documents (e.g. technology-
specific profiles).
Note that, in Window mode, the first fragment of the window is the Note that, in Window mode, the first fragment of the window is the
one sent with CFN=2^N-2. Also note that, in Window mode, the one with CFN=2^N-2. Also note that, in Window mode, the fragment
fragment with CFN=0 is considered the last fragment of its window, with CFN=0 is considered the last fragment of its window, except for
except for the last fragment of the whole packet (with all CFN bits the last fragment of the whole packet (with all CFN bits set to 1,
set to 1), which is also the last fragment of the last window. Upon i.e. CFN=2^N-1), which is also the last fragment of the last window.
receipt of the last fragment of a window, if Window mode - ACK
"Always" is used, the fragment receiver MUST send an ACK to the
fragment sender. The ACK provides feedback on the fragments received
and lost that correspond to the last window.
If the recipient receives the last fragment of an IPv6 datagram, it If Window mode - ACK "always" is used, upon receipt of the last
checks for the integrity of the reassembled IPv6 datagram, based on fragment of a window (i.e. the fragment with CFN=0 or CFN=2^N-1), the
the MIC received. In No ACK mode, if the integrity check indicates fragment receiver MUST send an ACK to the fragment sender. The ACK
that the reassembled IPv6 datagram does not match the original IPv6 provides feedback on the fragments received and those not received
datagram (prior to fragmentation), the reassembled IPv6 datagram MUST that correspond to the last window. Once all fragments of a window
be discarded. If Window mode - ACK "Always" is used, the recipient have been received by the fragment receiver (including retransmitted
MUST transmit an ACK to the fragment sender. The ACK provides fragments, if any), the latter sends an ACK without a bitmap to the
feedback on the fragments that correspond to the last window. If sender, in order to report sucessful reception of all fragments of
Window mode - ACK on error is used, the recipient MUST NOT transmit the window to the fragment sender.
an ACK to the sender if no losses have been detected for the last
window. If losses have been detected, the recipient MUST then
transmit an ACK to the sender to provide feedback on the last window.
When Window mode - ACK "Always" is used, the fragment sender starts a When Window mode - ACK "always" is used, the fragment sender starts a
timer (denoted "ACK Always Timer") after transmitting the last timer (denoted "ACK Always Timer") after the first transmission
fragment of a fragmented IPv6 datagram. The fragment sender also attempt of the last fragment of a window (i.e. the fragment with
starts the ACK Always Timer after transmitting the last fragment of a CFN=0 or CFN=2^N-1). In the same reliability option, if one or more
window. The initial value for this timer is not provided by this fragments are reported by an ACK to be lost, the sender retransmits
specification, and is expected to be defined in additional documents. those fragments and starts the "ACK Always Timer" after the last
Upon expiration of the timer, if no ACK has been received for the retransmitted fragment (i.e. the fragment with the lowest CFN) among
current window, the sender retransmits the last fragment, and it the set of lost fragments reported by the ACK. The initial value for
reinitializes and restarts the timer. Note that retransmitting the the "ACK Always Timer" is not provided by this specification, and it
last fragment of a window as described serves as an ACK request. The is expected to be defined in additional documents. Upon expiration
maximum number of requests for a specific ACK, denoted of the timer, if no ACK has been received since the timer start, the
MAX_ACK_REQUESTS, is not stated in this document, and it is expected sender retransmits the last fragment sent, and it reinitializes and
to be defined in other documents (e.g. technology-specific profiles). restarts the timer. Note that retransmitting the last fragment sent
as described serves as an ACK request. The maximum number of
requests for a specific ACK, denoted MAX_ACK_REQUESTS, is not stated
in this document, and it is expected to be defined in other documents
(e.g. technology-specific profiles). In Window mode - ACK "Always",
the fragment sender retransmits any lost fragments reported in an
ACK, as long as the number of retries for each one of those fragments
does not exceed MAX_FRAG_RETRIES. The default value for
MAX_FRAG_RETRIES is not provided in this document and it is expected
to be defined in additional documents. When the fragment sender
receives an ACK that confirms correct reception of all fragments of a
window, if there are further fragments to be sent for the same IPv6
datagram, the fragment sender proceeds to transmitting subsequent
fragments of the next window.
In all Window mode options, the fragment sender retransmits any lost If the recipient receives the last fragment of an IPv6 datagram (i.e.
fragments reported in an ACK. the fragment with CFN=2^N-1), it checks for the integrity of the
reassembled IPv6 datagram, based on the MIC received. In No ACK
mode, if the integrity check indicates that the reassembled IPv6
datagram does not match the original IPv6 datagram (prior to
fragmentation), the reassembled IPv6 datagram MUST be discarded. If
Window mode - ACK "Always" is used, the recipient MUST transmit an
ACK to the fragment sender. The ACK provides feedback on the
fragments from the last window that have been received or not per the
information available at the receiver. If Window mode - ACK on error
is used, the recipient MUST NOT transmit an ACK to the sender if no
losses have been detected for the last window. If losses have been
detected, the recipient MUST then transmit an ACK to the sender to
provide feedback on the transmission of the last window of fragments.
If a fragment recipient disassociates from its L2 network, the If a fragment recipient disassociates from its L2 network, the
recipient MUST discard all link fragments of all partially recipient MUST discard all link fragments of all partially
reassembled payload datagrams, and fragment senders MUST discard all reassembled payload datagrams, and fragment senders MUST discard all
not yet transmitted link fragments of all partially transmitted not yet transmitted link fragments of all partially transmitted
payload (e.g., IPv6) datagrams. Similarly, when a node first payload (e.g., IPv6) datagrams. Similarly, when a node first
receives a fragment of a packet, it starts a reassembly timer. When receives a fragment of a packet, it starts a reassembly timer. When
this time expires, if the entire packet has not been reassembled, the this time expires, if the entire packet has not been reassembled, the
existing fragments MUST be discarded and the reassembly state MUST be existing fragments MUST be discarded and the reassembly state MUST be
flushed. The value for this timer is not provided by this flushed. The value for this timer is not provided by this
skipping to change at page 32, line 38 skipping to change at page 33, line 38
[I-D.ietf-lpwan-overview] [I-D.ietf-lpwan-overview]
Farrell, S., "LPWAN Overview", draft-ietf-lpwan- Farrell, S., "LPWAN Overview", draft-ietf-lpwan-
overview-04 (work in progress), June 2017. overview-04 (work in progress), June 2017.
Appendix A. Fragmentation examples Appendix A. Fragmentation examples
This section provides examples of different fragment delivery This section provides examples of different fragment delivery
reliability options possible on the basis of this specification. reliability options possible on the basis of this specification.
Figure 15 illustrates the transmission of an IPv6 packet that needs Figure 16 illustrates the transmission of an IPv6 packet that needs
11 fragments in the No ACK option. 11 fragments in the No ACK option.
Sender Receiver Sender Receiver
|-------CFN=0-------->| |-------CFN=0-------->|
|-------CFN=0-------->| |-------CFN=0-------->|
|-------CFN=0-------->| |-------CFN=0-------->|
|-------CFN=0-------->| |-------CFN=0-------->|
|-------CFN=0-------->| |-------CFN=0-------->|
|-------CFN=0-------->| |-------CFN=0-------->|
|-------CFN=0-------->| |-------CFN=0-------->|
|-------CFN=0-------->| |-------CFN=0-------->|
|-------CFN=0-------->| |-------CFN=0-------->|
|-------CFN=0-------->| |-------CFN=0-------->|
|-------CFN=1-------->|MIC checked => |-------CFN=1-------->|MIC checked =>
Figure 15: Transmission of an IPv6 packet carried by 11 fragments in Figure 16: Transmission of an IPv6 packet carried by 11 fragments in
the No ACK option the No ACK option
Figure 16 illustrates the transmission of an IPv6 packet that needs Figure 17 illustrates the transmission of an IPv6 packet that needs
11 fragments in Window mode - ACK on error, for N=3, without losses. 11 fragments in Window mode - ACK on error, for N=3, without losses.
Sender Receiver Sender Receiver
|-----W=1, CFN=6----->| |-----W=1, CFN=6----->|
|-----W=1, CFN=5----->| |-----W=1, CFN=5----->|
|-----W=1, CFN=4----->| |-----W=1, CFN=4----->|
|-----W=1, CFN=3----->| |-----W=1, CFN=3----->|
|-----W=1, CFN=2----->| |-----W=1, CFN=2----->|
|-----W=1, CFN=1----->| |-----W=1, CFN=1----->|
|-----W=1, CFN=0----->| |-----W=1, CFN=0----->|
(no ACK) (no ACK)
|-----W=0, CFN=6----->| |-----W=0, CFN=6----->|
|-----W=0, CFN=5----->| |-----W=0, CFN=5----->|
|-----W=0, CFN=4----->| |-----W=0, CFN=4----->|
|-----W=0, CFN=7----->|MIC checked => |-----W=0, CFN=7----->|MIC checked =>
(no ACK) (no ACK)
Figure 16: Transmission of an IPv6 packet carried by 11 fragments in Figure 17: Transmission of an IPv6 packet carried by 11 fragments in
Window mode - ACK on error, for N=3, without losses. Window mode - ACK on error, for N=3, without losses.
Figure 17 illustrates the transmission of an IPv6 packet that needs Figure 18 illustrates the transmission of an IPv6 packet that needs
11 fragments in Window mode - ACK on error, for N=3, with three 11 fragments in Window mode - ACK on error, for N=3, with three
losses. losses.
Sender Receiver Sender Receiver
|-----W=1, CFN=6----->| |-----W=1, CFN=6----->|
|-----W=1, CFN=5----->| |-----W=1, CFN=5----->|
|-----W=1, CFN=4--X-->| |-----W=1, CFN=4--X-->|
|-----W=1, CFN=3----->| |-----W=1, CFN=3----->|
|-----W=1, CFN=2--X-->| |-----W=1, CFN=2--X-->|
|-----W=1, CFN=1----->| |-----W=1, CFN=1----->|
skipping to change at page 34, line 25 skipping to change at page 35, line 25
|-----W=1, CFN=2----->| |-----W=1, CFN=2----->|
(no ACK) (no ACK)
|-----W=0, CFN=6----->| |-----W=0, CFN=6----->|
|-----W=0, CFN=5----->| |-----W=0, CFN=5----->|
|-----W=0, CFN=4--X-->| |-----W=0, CFN=4--X-->|
|-----W=0, CFN=7----->|MIC checked |-----W=0, CFN=7----->|MIC checked
|<-----ACK, W=0-------|Bitmap:11000001 |<-----ACK, W=0-------|Bitmap:11000001
|-----W=0, CFN=4----->|MIC checked => |-----W=0, CFN=4----->|MIC checked =>
(no ACK) (no ACK)
Figure 17: Transmission of an IPv6 packet carried by 11 fragments in Figure 18: Transmission of an IPv6 packet carried by 11 fragments in
Window mode - ACK on error, for N=3, three losses. Window mode - ACK on error, for N=3, three losses.
Figure 18 illustrates the transmission of an IPv6 packet that needs Figure 19 illustrates the transmission of an IPv6 packet that needs
11 fragments in Window mode - ACK "always", for N=3, without losses. 11 fragments in Window mode - ACK "always", for N=3, without losses.
Note: in Window mode, an additional bit will be needed to number Note: in Window mode, an additional bit will be needed to number
windows. windows.
Sender Receiver Sender Receiver
|-----W=1, CFN=6----->| |-----W=1, CFN=6----->|
|-----W=1, CFN=5----->| |-----W=1, CFN=5----->|
|-----W=1, CFN=4----->| |-----W=1, CFN=4----->|
|-----W=1, CFN=3----->| |-----W=1, CFN=3----->|
|-----W=1, CFN=2----->| |-----W=1, CFN=2----->|
|-----W=1, CFN=1----->| |-----W=1, CFN=1----->|
|-----W=1, CFN=0----->| |-----W=1, CFN=0----->|
|<-----ACK, W=1-------|no bitmap |<-----ACK, W=1-------|no bitmap
|-----W=0, CFN=6----->| |-----W=0, CFN=6----->|
|-----W=0, CFN=5----->| |-----W=0, CFN=5----->|
|-----W=0, CFN=4----->| |-----W=0, CFN=4----->|
|-----W=0, CFN=7----->|MIC checked => |-----W=0, CFN=7----->|MIC checked =>
|<-----ACK, W=0-------|no bitmap |<-----ACK, W=0-------|no bitmap
(End) (End)
Figure 18: Transmission of an IPv6 packet carried by 11 fragments in Figure 19: Transmission of an IPv6 packet carried by 11 fragments in
Window mode - ACK "always", for N=3, no losses. Window mode - ACK "always", for N=3, no losses.
Figure 19 illustrates the transmission of an IPv6 packet that needs Figure 20 illustrates the transmission of an IPv6 packet that needs
11 fragments in Window mode - ACK "always", for N=3, with three 11 fragments in Window mode - ACK "always", for N=3, with three
losses. losses.
Sender Receiver Sender Receiver
|-----W=1, CFN=6----->| |-----W=1, CFN=6----->|
|-----W=1, CFN=5----->| |-----W=1, CFN=5----->|
|-----W=1, CFN=4--X-->| |-----W=1, CFN=4--X-->|
|-----W=1, CFN=3----->| |-----W=1, CFN=3----->|
|-----W=1, CFN=2--X-->| |-----W=1, CFN=2--X-->|
|-----W=1, CFN=1----->| |-----W=1, CFN=1----->|
skipping to change at page 35, line 30 skipping to change at page 36, line 30
|<-----ACK, W=1-------|no bitmap |<-----ACK, W=1-------|no bitmap
|-----W=0, CFN=6----->| |-----W=0, CFN=6----->|
|-----W=0, CFN=5----->| |-----W=0, CFN=5----->|
|-----W=0, CFN=4--X-->| |-----W=0, CFN=4--X-->|
|-----W=0, CFN=7----->|MIC checked |-----W=0, CFN=7----->|MIC checked
|<-----ACK, W=0-------|bitmap:11000001 |<-----ACK, W=0-------|bitmap:11000001
|-----W=0, CFN=4----->|MIC checked => |-----W=0, CFN=4----->|MIC checked =>
|<-----ACK, W=0-------|no bitmap |<-----ACK, W=0-------|no bitmap
(End) (End)
Figure 19: Transmission of an IPv6 packet carried by 11 fragments in Figure 20: Transmission of an IPv6 packet carried by 11 fragments in
Window mode - ACK "Always", for N=3, with three losses. Window mode - ACK "Always", for N=3, with three losses.
Appendix B. Rule IDs for fragmentation Appendix B. Rule IDs for fragmentation
Different Rule IDs may be used for different aspects of fragmentation Different Rule IDs may be used for different aspects of fragmentation
functionality as per this document. A summary of such Rule IDs functionality as per this document. A summary of such Rule IDs
follows: follows:
o A fragment, and the reliability option in use for the IPv6 o A fragment, and the reliability option in use for the IPv6
datagram being carried: i) No ACK, ii) Window mode - ACK on error, datagram being carried: i) No ACK, ii) Window mode - ACK on error,
 End of changes. 74 change blocks. 
217 lines changed or deleted 264 lines changed or added

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