< draft-ietf-lpwan-ipv6-static-context-hc-12.txt   draft-ietf-lpwan-ipv6-static-context-hc-13.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: November 19, 2018 IMT-Atlantique Expires: November 23, 2018 IMT-Atlantique
C. Gomez C. Gomez
Universitat Politecnica de Catalunya Universitat Politecnica de Catalunya
May 18, 2018 May 22, 2018
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-12 draft-ietf-lpwan-ipv6-static-context-hc-13
Abstract Abstract
This document defines the Static Context Header Compression (SCHC) This document defines the Static Context Header Compression (SCHC)
framework, which provides header compression and fragmentation framework, which provides header compression and fragmentation
functionality. SCHC has been tailored for Low Power Wide Area functionality. SCHC has been tailored for Low Power Wide Area
Networks (LPWAN). Networks (LPWAN).
SCHC compression is based on a common static context stored in both SCHC compression is based on a common static context stored in both
LPWAN devices and in the network sides. This document defines SCHC LPWAN devices and in the network sides. This document defines SCHC
skipping to change at page 2, line 7 skipping to change at page 2, line 7
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 https://datatracker.ietf.org/drafts/current/. Drafts is at https://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 November 19, 2018. This Internet-Draft will expire on November 23, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 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
(https://trustee.ietf.org/license-info) in effect on the date of (https://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 13, line 40 skipping to change at page 13, line 40
header. header.
The Rule also describes the Compression Residue sent regarding the The Rule also describes the Compression Residue sent regarding the
order of the Fields Descriptions in the Rule. order of the Fields Descriptions in the Rule.
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 Field ID (FID) is a unique value to define the header field. o Field ID (FID) is a unique value to define the header field.
o Field Length (FL) represents the length of the field in bits for o Field Length (FL) represents the length of the field. It can be
fixed values or a type (variable, token length, ...) for Field either a fixed value (in bits) if the length is known when the
Description length unknown at the rule creation. The length of a rule is created or a type if the length is variable. The length
header field is defined in the specific protocol standard. of a header field is defined in the specific protocol standard.
The type defines the process to compute length, its unit (bits,
bytes,...) and the value to be sent before the compression
residue.
o Field Position (FP): indicating if several instances of a field o Field Position (FP): indicating if several instances of a field
exist in the headers which one is targeted. The default position exist in the headers which one is targeted. The default position
is 1. is 1.
o A direction indicator (DI) indicates the packet direction(s) this o A direction indicator (DI) indicates the packet direction(s) this
Field Description applies to. Three values are possible: Field Description applies to. Three values are possible:
* UPLINK (Up): this Field Description is only applicable to * UPLINK (Up): this Field Description is only applicable to
packets sent by the Dev to the App, packets sent by the Dev to the App,
skipping to change at page 15, line 41 skipping to change at page 15, line 45
compressed header (with possibly a Compression Residue) SHOULD compressed header (with possibly a Compression Residue) SHOULD
be obtained. Otherwise, the next Rule is tested. be obtained. Otherwise, the next Rule is tested.
* If no eligible Rule is found, then the header MUST be sent * If no eligible Rule is found, then the header MUST be sent
without compression, depending on the L2 PDU size, this is one without compression, depending on the L2 PDU size, this is one
of the case that MAY require the use of the SCHC F/R process. of the case that MAY require the use of the SCHC F/R process.
o Sending: If an eligible Rule is found, the Rule ID is sent to the o Sending: If an eligible Rule is found, the Rule ID is sent to the
other end followed by the Compression Residue (which could be other end followed by the Compression Residue (which could be
empty) and directly followed by the payload. The Compression empty) and directly followed by the payload. The Compression
Residue is the concatenation of the Compression Residues for each Residue is the concatenation of the Compression
field according to the CDAs for that rule. The way the Rule ID is Residues for each field according to the CDAs for that rule. The
sent depends on the specific LPWAN layer two technology. For way the Rule ID is sent depends on the specific LPWAN layer two
example, it can be either included in a Layer 2 header or sent in technology. For example, it can be either included in a Layer 2
the first byte of the L2 payload. (Cf. Figure 9). This process header or sent in the first byte of the L2 payload. (Cf.
will be specified in the LPWAN technology-specific document and is Figure 9). This process will be specified in the LPWAN
out of the scope of the present document. On LPWAN technologies technology-specific document and is out of the scope of the
that are byte- oriented, the compressed header concatenated with present document. On LPWAN technologies that are byte- oriented,
the original packet payload is padded to a multiple of 8 bits, if the compressed header concatenated with the original packet
needed. See Section 8 for details. payload is padded to a multiple of 8 bits, if needed. See
Section 8 for details.
o Decompression: When doing decompression, in the network side the o Decompression: When doing decompression, in the network side the
SCHC C/D needs to find the correct Rule based on the L2 address SCHC C/D needs to find the correct Rule based on the L2 address
and in this way, it can use the Dev-ID and the Rule-ID. In the and in this way, it can use the Dev-ID and the Rule-ID. In the
Dev side, only the Rule ID is needed to identify the correct Rule Dev side, only the Rule ID is needed to identify the correct Rule
since the Dev only holds Rules that apply to itself. since the Dev only holds Rules that apply to itself.
The receiver identifies the sender through its device-id (e.g. The receiver identifies the sender through its device-id (e.g.
MAC address, if exists) and selects the appropriate Rule MAC address, if exists) and selects the appropriate Rule
from the Rule ID. If a source identifier is present in the L2 from the Rule ID. If a source identifier is present in the L2
skipping to change at page 16, line 46 skipping to change at page 16, line 50
o equal: The match result is True if a field value in a packet and o equal: The match result is True if a field value in a packet and
the value in the TV are equal. the value in the TV are equal.
o ignore: No check is done between a field value in a packet and a o ignore: No check is done between a field value in a packet and a
TV in the Rule. The result of the matching is always true. TV in the Rule. The result of the matching is always true.
o MSB(x): A match is obtained if the most significant x bits of the o MSB(x): A match is obtained if the most significant x bits of the
field value in the header packet are equal to the TV in the Rule. field value in the header packet are equal to the TV in the Rule.
The x parameter of the MSB Matching Operator indicates how many The x parameter of the MSB Matching Operator indicates how many
bits are involved in the comparison. bits are involved in the comparison. If the FL is described as
variable, the length must be a multiple of the unit. For example,
x must be multiple of 8 if the unit of the variable length is in
bytes.
o match-mapping: With match-mapping, the Target Value is a list of o match-mapping: With match-mapping, the Target Value is a list of
values. Each value of the list is identified by a short ID (or values. Each value of the list is identified by a short ID (or
index). Compression is achieved by sending the index instead of index). Compression is achieved by sending the index instead of
the original header field value. This operator matches if the the original header field value. This operator matches if the
header field value is equal to one of the values in the target header field value is equal to one of the values in the target
list. list.
6.5. Compression Decompression Actions (CDA) 6.5. Compression Decompression Actions (CDA)
skipping to change at page 17, line 42 skipping to change at page 17, line 50
The second and third columns outline the reciprocal compression/ The second and third columns outline the reciprocal compression/
decompression behavior for each action. decompression behavior for each action.
Compression is done in order that Fields Descriptions appear in the Compression is done in order that Fields Descriptions appear in the
Rule. The result of each Compression/Decompression Action is Rule. The result of each Compression/Decompression Action is
appended to the working Compression Residue in that same order. The appended to the working Compression Residue in that same order. The
receiver knows the size of each compressed field which can be given receiver knows the size of each compressed field which can be given
by the rule or MAY be sent with the compressed header. by the rule or MAY be sent with the compressed header.
If the field is identified as being variable in the Field If the field is identified as being variable in the Field
Description, then the size of the Compression Residue value in bytes Description, then the size of the Compression Residue value (using
MUST be sent first using the following coding: the unit defined in the FL) MUST be sent first using the following
coding:
o If the size is between 0 and 14 bytes, it is sent as a 4-bits o If the size is between 0 and 14 bytes, it is sent as a 4-bits
integer. integer.
o For values between 15 and 254, the first 4 bits sent are set to 1 o For values between 15 and 254, the first 4 bits sent are set to 1
and the size is sent using 8 bits integer. and the size is sent using 8 bits integer.
o For higher values of size, the first 12 bits are set to 1 and the o For higher values of size, the first 12 bits are set to 1 and the
next two bytes contain the size value as a 16 bits integer. next two bytes contain the size value as a 16 bits integer.
skipping to change at page 20, line 10 skipping to change at page 20, line 14
o compute-checksum: computes a checksum from the information already o compute-checksum: computes 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.
7. Fragmentation 7. Fragmentation
7.1. Overview 7.1. Overview
In LPWAN technologies, the L2 data unit size typically varies from In LPWAN technologies, the L2 data unit size typically varies from
tens to hundreds of bytes. The SCHC Fragmentation /Reassembly MAY be tens to hundreds of bytes. The SCHC F/R (Fragmentation /Reassembly)
used either because after applying SCHC C/D or when SCHC C/D is not MAY be used either because after applying SCHC C/D or when SCHC C/D
possible the entire SCHC Packet still exceeds the L2 data unit. is not possible the entire SCHC Packet still exceeds the L2 data
unit.
The SCHC F/R functionality defined in this document has been designed The SCHC F/R functionality defined in this document has been designed
under the assumption that data unit out-of- sequence delivery will under the assumption that data unit out-of- sequence delivery will
not happen between the entity performing fragmentation and the entity not happen between the entity performing fragmentation and the entity
performing reassembly. This assumption allows reducing the performing reassembly. This assumption allows reducing the
complexity and overhead of the SCHC F/R mechanism. complexity and overhead of the SCHC F/R mechanism.
To adapt the SCHC F/R to the capabilities of LPWAN technologies is To adapt the SCHC F/R to the capabilities of LPWAN technologies is
required to enable optional SCHC Fragment retransmission and to allow required to enable optional SCHC Fragment retransmission and to allow
a stepper delivery for the reliability of SCHC Fragments. This a stepper delivery for the reliability of SCHC Fragments. This
skipping to change at page 23, line 46 skipping to change at page 23, line 50
o Padding (P). If it is needed, the number of bits used for padding o Padding (P). If it is needed, the number of bits used for padding
is not defined and depends on the size of the Rule ID, DTag and is not defined and depends on the size of the Rule ID, DTag and
FCN fields, and on the L2 payload size (see Section 8). Some SCHC FCN fields, and on the L2 payload size (see Section 8). Some SCHC
ACKs are byte-aligned and do not need padding (see ACKs are byte-aligned and do not need padding (see
Section 7.4.3.1). Section 7.4.3.1).
7.3. Reliability modes 7.3. Reliability modes
This specification defines three reliability modes: No-ACK, ACK- This specification defines three reliability modes: No-ACK, ACK-
Always and ACK-on-Error. ACK-Always and ACK-on-Error operate on Always, and ACK-on-Error. ACK-Always and ACK-on-Error operate on
windows of SCHC Fragments. A window of SCHC Fragments is a subset of windows of SCHC Fragments. A window of SCHC Fragments is a subset of
the full set of SCHC Fragments needed to carry a packet or an SCHC the full set of SCHC Fragments needed to carry a packet or an SCHC
Packet. Packet.
o No-ACK. No-ACK is the simplest SCHC Fragment reliability mode. o No-ACK. No-ACK is the simplest SCHC Fragment reliability mode.
The receiver does not generate overhead in the form of The receiver does not generate overhead in the form of
acknowledgments (ACKs). However, this mode does not enhance acknowledgments (ACKs). However, this mode does not enhance
reliability beyond that offered by the underlying LPWAN reliability beyond that offered by the underlying LPWAN
technology. In the No-ACK mode, the receiver MUST NOT issue SCHC technology. In the No-ACK mode, the receiver MUST NOT issue SCHC
ACKs. See further details in Section 7.5.1. ACKs. See further details in Section 7.5.1.
skipping to change at page 24, line 24 skipping to change at page 24, line 29
expense of SCHC ACK use. In ACK-Always the receiver sends an SCHC expense of SCHC ACK use. In ACK-Always the receiver sends an SCHC
ACK after a window of SCHC Fragments has been received, where a ACK after a window of SCHC Fragments has been received, where a
window of SCHC Fragments is a subset of the whole number of SCHC window of SCHC Fragments is a subset of the whole number of SCHC
Fragments needed to carry a complete SCHC Packet. The SCHC ACK is Fragments needed to carry a complete SCHC Packet. The SCHC ACK is
used to inform the sender if a SCHC fragment in the actual window used to inform the sender if a SCHC fragment in the actual window
has been lost or well received. Upon an SCHC ACK reception, the has been lost or well received. Upon an SCHC ACK reception, the
sender retransmits the lost SCHC Fragments. When an SCHC ACK is sender retransmits the lost SCHC Fragments. When an SCHC ACK is
lost and the sender has not received it before the expiration of lost and the sender has not received it before the expiration of
the Retransmission Timer, the sender uses an SCHC ACK request by the Retransmission Timer, the sender uses an SCHC ACK request by
sending the All-0 empty SCHC Fragment when it is not the last sending the All-0 empty SCHC Fragment when it is not the last
windown and the ALL-1 empty Fragment when it is the last window. window and the ALL-1 empty Fragment when it is the last window.
The maximum number of SCHC ACK requests is MAX_ACK_REQUESTS. If The maximum number of SCHC ACK requests is MAX_ACK_REQUESTS. If
the MAX_ACK_REQUEST is reached the transmission needs to be the MAX_ACK_REQUEST is reached the transmission needs to be
Aborted. See further details in Section 7.5.2. Aborted. See further details in Section 7.5.2.
o ACK-on-Error. The ACK-on-Error mode is suitable for links o ACK-on-Error. The ACK-on-Error mode is suitable for links
offering relatively low L2 data unit loss probability. In this offering relatively low L2 data unit loss probability. In this
mode, the SCHC Fragment receiver reduces the number of SCHC ACKs mode, the SCHC Fragment receiver reduces the number of SCHC ACKs
transmitted, which MAY be especially beneficial in asymmetric transmitted, which MAY be especially beneficial in asymmetric
scenarios. Because the SCHC Fragments use the uplink of the scenarios. Because the SCHC Fragments use the uplink of the
underlying LPWAN technology, which has higher capacity than underlying LPWAN technology, which has higher capacity than
skipping to change at page 28, line 45 skipping to change at page 28, line 45
C C
Figure 20: Format of an SCHC ACK for All-1 windows Figure 20: Format of an SCHC ACK for All-1 windows
7.4.3.1. Bitmap Encoding 7.4.3.1. Bitmap Encoding
The Bitmap is transmitted by a receiver as part of the SCHC ACK The Bitmap is transmitted by a receiver as part of the SCHC ACK
format. An SCHC ACK message MAY include padding at the end to align format. An SCHC ACK message MAY include padding at the end to align
its number of transmitted bits to a multiple of 8 bits. its number of transmitted bits to a multiple of 8 bits.
Note that the SCHC ACK sent in response to an All-1 fragment includes Note that the SCHC ACK sent a response to an All-1 fragment including
the C bit. Therefore, the window size and thus the encoded Bitmap the C bit. Therefore, the window size and thus the encoded Bitmap
size need to be determined taking into account the available space in size need to be determined to take into account the available space
the layer two frame payload, where there will be 1 bit less for an in the layer two frame payload, where there will be 1 bit less for an
SCHC ACK sent in response to an All-1 fragment than in other SCHC SCHC ACK sent in response to an All-1 fragment than in other SCHC
ACKs. Note that the maximum number of SCHC Fragments of the last ACKs. Note that the maximum number of SCHC Fragments of the last
window is one unit smaller than that of the previous windows. window is one unit smaller than that of the previous windows.
When the receiver transmits an encoded Bitmap with a SCHC Fragment When the receiver transmits an encoded Bitmap with a SCHC Fragment
that has not been sent during the transmission, the sender will Abort that has not been sent during the transmission, the sender will Abort
the transmission. the transmission.
|---- Bitmap bits ----| |---- Bitmap bits ----|
| Rule ID | DTag |W|1|0|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1| | Rule ID | DTag |W|1|0|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|
|--- byte boundary ----| 1 byte next | 1 byte next | |--- byte boundary ----| 1 byte next | 1 byte next |
Figure 21: A non-encoded Bitmap Figure 21: A non-encoded Bitmap
In order to reduce the resulting frame size, the encoded Bitmap is In order to reduce the resulting frame size, the encoded Bitmap is
shortened by applying the following algorithm: all the right-most shortened by applying the following algorithm: all the right-most
contiguous bytes in the encoded Bitmap that have all their bits set contiguous bytes in the encoded Bitmap that have all their bits set
to 1 MUST NOT be transmitted. Because the SCHC Fragment sender knows to 1 MUST NOT be transmitted. Because the SCHC Fragment sender knows
the actual Bitmap size, it can reconstruct the original Bitmap with the actual Bitmap size, it can reconstruct the original Bitmap with
the trailing 1 bit optimized away. In the example shown in the trailing 1 bit optimized away. In the example shown in
Figure 22, the last 2 bytes of the Bitmap shown in Figure 21 comprise Figure 22, the last 2 bytes of the Bitmap shown in Figure 21
bits that are all set to 1, therefore they are not sent. comprises bits that are all set to 1, therefore they are not sent.
|-- T --|1| |-- T --|1|
+---- ... --+- ... -+-+-+-+ +---- ... --+- ... -+-+-+-+
| Rule ID | DTag |W|1|0| | Rule ID | DTag |W|1|0|
+---- ... --+- ... -+-+-+-+ +---- ... --+- ... -+-+-+-+
|---- byte boundary -----| |---- byte boundary -----|
Figure 22: Optimized Bitmap format Figure 22: Optimized Bitmap format
Figure 23 shows an example of an SCHC ACK with FCN ranging from 6 Figure 23 shows an example of an SCHC ACK with FCN ranging from 6
 End of changes. 14 change blocks. 
31 lines changed or deleted 40 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/