< draft-ietf-lpwan-ipv6-static-context-hc-15.txt   draft-ietf-lpwan-ipv6-static-context-hc-16.txt >
skipping to change at page 1, line 15 skipping to change at page 1, line 15
Intended status: Standards Track L. Toutain Intended status: Standards Track L. Toutain
Expires: December 31, 2018 IMT-Atlantique Expires: December 31, 2018 IMT-Atlantique
C. Gomez C. Gomez
Universitat Politecnica de Catalunya Universitat Politecnica de Catalunya
D. Barthel D. Barthel
Orange Labs Orange Labs
June 29, 2018 June 29, 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-15 draft-ietf-lpwan-ipv6-static-context-hc-16
Abstract Abstract
This document defines the Static Context Header Compression (SCHC) This document defines the Static Context Header Compression (SCHC)
framework, which provides both header compression and fragmentation framework, which provides both header compression and fragmentation
functionalities. SCHC has been tailored for Low Power Wide Area functionalities. 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
the LPWAN devices and the network side. This document defines a the LPWAN devices and the network side. This document defines a
skipping to change at page 3, line 14 skipping to change at page 3, line 14
8.3. Reliability modes . . . . . . . . . . . . . . . . . . . . 25 8.3. Reliability modes . . . . . . . . . . . . . . . . . . . . 25
8.4. Fragmentation Formats . . . . . . . . . . . . . . . . . . 27 8.4. Fragmentation Formats . . . . . . . . . . . . . . . . . . 27
8.4.1. Fragments that are not the last one . . . . . . . . . 27 8.4.1. Fragments that are not the last one . . . . . . . . . 27
8.4.2. All-1 fragment . . . . . . . . . . . . . . . . . . . 29 8.4.2. All-1 fragment . . . . . . . . . . . . . . . . . . . 29
8.4.3. SCHC ACK format . . . . . . . . . . . . . . . . . . . 31 8.4.3. SCHC ACK format . . . . . . . . . . . . . . . . . . . 31
8.4.4. Abort formats . . . . . . . . . . . . . . . . . . . . 33 8.4.4. Abort formats . . . . . . . . . . . . . . . . . . . . 33
8.5. Baseline mechanism . . . . . . . . . . . . . . . . . . . 35 8.5. Baseline mechanism . . . . . . . . . . . . . . . . . . . 35
8.5.1. No-ACK . . . . . . . . . . . . . . . . . . . . . . . 36 8.5.1. No-ACK . . . . . . . . . . . . . . . . . . . . . . . 36
8.5.2. ACK-Always . . . . . . . . . . . . . . . . . . . . . 36 8.5.2. ACK-Always . . . . . . . . . . . . . . . . . . . . . 36
8.5.3. ACK-on-Error . . . . . . . . . . . . . . . . . . . . 39 8.5.3. ACK-on-Error . . . . . . . . . . . . . . . . . . . . 39
8.6. Supporting multiple window sizes . . . . . . . . . . . . 41 8.6. Supporting multiple window sizes . . . . . . . . . . . . 40
8.7. Downlink SCHC Fragment transmission . . . . . . . . . . . 41 8.7. Downlink SCHC Fragment transmission . . . . . . . . . . . 41
9. Padding management . . . . . . . . . . . . . . . . . . . . . 42 9. Padding management . . . . . . . . . . . . . . . . . . . . . 42
10. SCHC Compression for IPv6 and UDP headers . . . . . . . . . . 43 10. SCHC Compression for IPv6 and UDP headers . . . . . . . . . . 43
10.1. IPv6 version field . . . . . . . . . . . . . . . . . . . 43 10.1. IPv6 version field . . . . . . . . . . . . . . . . . . . 43
10.2. IPv6 Traffic class field . . . . . . . . . . . . . . . . 43 10.2. IPv6 Traffic class field . . . . . . . . . . . . . . . . 43
10.3. Flow label field . . . . . . . . . . . . . . . . . . . . 44 10.3. Flow label field . . . . . . . . . . . . . . . . . . . . 44
10.4. Payload Length field . . . . . . . . . . . . . . . . . . 44 10.4. Payload Length field . . . . . . . . . . . . . . . . . . 44
10.5. Next Header field . . . . . . . . . . . . . . . . . . . 44 10.5. Next Header field . . . . . . . . . . . . . . . . . . . 44
10.6. Hop Limit field . . . . . . . . . . . . . . . . . . . . 45 10.6. Hop Limit field . . . . . . . . . . . . . . . . . . . . 45
10.7. IPv6 addresses fields . . . . . . . . . . . . . . . . . 45 10.7. IPv6 addresses fields . . . . . . . . . . . . . . . . . 45
skipping to change at page 5, line 13 skipping to change at page 5, line 13
reassembly. reassembly.
Note that this document defines generic functionality and Note that this document defines generic functionality and
purposefully offers flexibility with regard to parameter settings and purposefully offers flexibility with regard to parameter settings and
mechanism choices. Such settings and choices are expected to be made mechanism choices. Such settings and choices are expected to be made
in other, technology-specific documents. in other, technology-specific documents.
2. Requirements Notation 2. Requirements Notation
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119][RFC8174] when, and only when, they appear in all 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
3. LPWAN Architecture 3. LPWAN Architecture
LPWAN technologies have similar network architectures but different LPWAN technologies have similar network architectures but different
terminologies. Using the terminology defined in [RFC8376], we can terminologies. Using the terminology defined in [RFC8376], we can
identify different types of entities in a typical LPWAN network, see identify different types of entities in a typical LPWAN network, see
Figure 1: 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,
skipping to change at page 11, line 5 skipping to change at page 11, line 5
As per this document, when a packet (e.g. an IPv6 packet) needs to be As per this document, when a packet (e.g. an IPv6 packet) needs to be
transmitted, header compression is first applied to the packet. The transmitted, header compression is first applied to the packet. The
resulting packet after header compression (whose header may or may resulting packet after header compression (whose header may or may
not actually be smaller than that of the original packet) is called a not actually be smaller than that of the original packet) is called a
SCHC Packet. If the SCHC Packet size exceeds the layer 2 (L2) MTU, SCHC Packet. If the SCHC Packet size exceeds the layer 2 (L2) MTU,
fragmentation is then applied to the SCHC Packet. The SCHC Packet or fragmentation is then applied to the SCHC Packet. The SCHC Packet or
the SCHC Fragments are then transmitted over the LPWAN. The the SCHC Fragments are then transmitted over the LPWAN. The
reciprocal operations take place at the receiver. This process is reciprocal operations take place at the receiver. This process is
illustrated in Figure 3. illustrated in Figure 3.
A packet (e.g. an IPv6 packet) A packet (e.g. an IPv6 packet)
| ^ | ^
v | v |
+------------------+ +--------------------+ +------------------+ +--------------------+
| SCHC Compression | | SCHC Decompression | | SCHC Compression | | SCHC Decompression |
+------------------+ +--------------------+ +------------------+ +--------------------+
| ^ | ^
| If no fragmentation (*) | | If no fragmentation (*) |
+-------------- SCHC Packet -------------->| +-------------- SCHC Packet -------------->|
| | | |
v | v |
+--------------------+ +-----------------+ +--------------------+ +-----------------+
| SCHC Fragmentation | | SCHC Reassembly | | SCHC Fragmentation | | SCHC Reassembly |
+--------------------+ +-----------------+ +--------------------+ +-----------------+
| ^ | ^ | ^ | ^
| | | | | | | |
| +-------------- SCHC ACK -------------+ | | +-------------- SCHC ACK -------------+ |
| | | |
+-------------- SCHC Fragments -------------------+ +-------------- SCHC Fragments -------------------+
SENDER RECEIVER SENDER RECEIVER
*: the decision to use Fragmentation or not is left to each LPWAN technology *: the decision to use Fragmentation or not is left to each LPWAN
over which SCHC is applied. See LPWAN technology-specific documents. technology over which SCHC is applied. See LPWAN
technology-specific documents.
Figure 3: SCHC operations taking place at the sender and the receiver Figure 3: SCHC operations taking place at the sender and the receiver
The SCHC Packet is composed of the Compressed Header followed by the The SCHC Packet is composed of the Compressed Header followed by the
payload from the original packet (see Figure 4). The Compressed payload from the original packet (see Figure 4). The Compressed
Header itself is composed of a Rule ID and a Compression Residue. Header itself is composed of a Rule ID and a Compression Residue.
The Compression Residue may be absent, see Section 7. Both the Rule The Compression Residue may be absent, see Section 7. Both the Rule
ID and the Compression Residue potentially have a variable size, and ID and the Compression Residue potentially have a variable size, and
generally are not a mutiple of bytes in size. generally are not a mutiple of bytes in size.
skipping to change at page 34, line 35 skipping to change at page 34, line 35
a Receiver-Abort is coded as a SCHC ACK message with a shortened a Receiver-Abort is coded as a SCHC ACK message with a shortened
Bitmap set to 1 up to the first L2 Word boundary, followed by an Bitmap set to 1 up to the first L2 Word boundary, followed by an
extra L2 Word full of 1's. Such a message never occurs in a regular extra L2 Word full of 1's. Such a message never occurs in a regular
acknowledgement and is detected as a Receiver-Abort. acknowledgement and is detected as a Receiver-Abort.
The Rule ID and Dtag values in the Receive-Abort message MUST be The Rule ID and Dtag values in the Receive-Abort message MUST be
identical to the ones used in the fragments of the SCHC Packet the identical to the ones used in the fragments of the SCHC Packet the
transmission of which is being aborted. transmission of which is being aborted.
A Receiver-Abort is aligned to L2 Words, by design. Therefore, A Receiver-Abort is aligned to L2 Words, by design. Therefore,
padding MUST not be appended. padding MUST NOT be appended.
|- Receiver-Abort Header -| |- Receiver-Abort Header -|
+---- ... ----+-- ... --+-+-+-+-+-+-+-+-+-+-+-+-+ +---- ... ----+-- ... --+-+-+-+-+-+-+-+-+-+-+-+-+
| Rule ID | DTag |W| 1..1| 1..1 | | Rule ID | DTag |W| 1..1| 1..1 |
+---- ... ----+-- ... --+-+-+-+-+-+-+-+-+-+-+-+-+ +---- ... ----+-- ... --+-+-+-+-+-+-+-+-+-+-+-+-+
next L2 Word boundary ->|<-- L2 Word -->| next L2 Word boundary ->|<-- L2 Word -->|
Figure 26: Receiver-Abort format Figure 26: Receiver-Abort format
skipping to change at page 38, line 16 skipping to change at page 38, line 16
managed by the receiver is computed based on the FCN value. The managed by the receiver is computed based on the FCN value. The
receiver prepares the encoded Bitmap to report the correctly received receiver prepares the encoded Bitmap to report the correctly received
and the missing SCHC Fragments for the current window. After each and the missing SCHC Fragments for the current window. After each
SCHC Fragment is received, the receiver initializes the Inactivity SCHC Fragment is received, the receiver initializes the Inactivity
Timer. When the Inactivity Timer expires, the transmission is Timer. When the Inactivity Timer expires, the transmission is
aborted by the receiver sending a Receiver-Abort message. aborted by the receiver sending a Receiver-Abort message.
When an All-0 fragment is received, it indicates that all the SCHC When an All-0 fragment is received, it indicates that all the SCHC
Fragments have been sent in the current window. Since the sender is Fragments have been sent in the current window. Since the sender is
not obliged to always send a full window, some SCHC Fragment number not obliged to always send a full window, some SCHC Fragment number
not set in the receiver memory SHOULD not correspond to losses. The not set in the receiver memory may not correspond to losses. The
receiver sends the corresponding SCHC ACK, the Inactivity Timer is receiver sends the corresponding SCHC ACK, the Inactivity Timer is
set and the transmission of the next window by the sender can start. set and the transmission of the next window by the sender can start.
If an All-0 fragment has been received and all SCHC Fragments of the If an All-0 fragment has been received and all SCHC Fragments of the
current window have also been received, the receiver then expects a current window have also been received, the receiver then expects a
new Window and waits for the next SCHC Fragment. Upon receipt of a new Window and waits for the next SCHC Fragment. Upon receipt of a
SCHC Fragment, if the window value has not changed, the received SCHC SCHC Fragment, if the window value has not changed, the received SCHC
Fragments are part of a retransmission. A receiver that has already Fragments are part of a retransmission. A receiver that has already
received a SCHC Fragment SHOULD discard it, otherwise, it updates the received a SCHC Fragment SHOULD discard it, otherwise, it updates the
encoded Bitmap. If all the bits of the encoded Bitmap are set to Bitmap. If all the bits of the Bitmap are set to one, the receiver
one, the receiver MUST send a SCHC ACK without waiting for an All-0 MUST send a SCHC ACK without waiting for an All-0 fragment and the
fragment and the Inactivity Timer is initialized. Inactivity Timer is initialized.
On the other hand, if the window value of the next received SCHC On the other hand, if the window value of the next received SCHC
Fragment is set to the next expected window value, this means that Fragment is set to the next expected window value, this means that
the sender has received a correct encoded Bitmap reporting that all the sender has received a correct encoded Bitmap reporting that all
SCHC Fragments have been received. The receiver then updates the SCHC Fragments have been received. The receiver then updates the
value of the next expected window. value of the next expected window.
When an All-1 fragment is received, it indicates that the last SCHC When an All-1 fragment is received, it indicates that the last SCHC
Fragment of the packet has been sent. Since the last window is not Fragment of the packet has been sent. Since the last window is not
always full, the MIC will be used by the receiver to detect if all always full, the MIC will be used by the receiver to detect if all
skipping to change at page 39, line 27 skipping to change at page 39, line 27
transmission. transmission.
In ACK-on-Error, the Retransmission Timer expiration is considered as In ACK-on-Error, the Retransmission Timer expiration is considered as
a positive acknowledgement for all windows but the last one. This a positive acknowledgement for all windows but the last one. This
timer is set after sending an All-0 or an All-1 fragment. For an timer is set after sending an All-0 or an All-1 fragment. For an
All-0 fragment, on timer expiration, the sender resumes operation and All-0 fragment, on timer expiration, the sender resumes operation and
sends the SCHC Fragments of the next window. sends the SCHC Fragments of the next window.
If the sender receives a SCHC ACK, it checks the window value. SCHC If the sender receives a SCHC ACK, it checks the window value. SCHC
ACKs with an unexpected window number are discarded. If the window ACKs with an unexpected window number are discarded. If the window
number on the received encoded Bitmap is correct, the sender verifies number in the received SCHC ACK is correct, the sender verifies if
if the receiver has received all SCHC fragments of the current the receiver has received all SCHC fragments of the current window.
window. When at least one SCHC Fragment has been lost, the counter When at least one SCHC Fragment has been lost, the counter Attempts
Attempts is increased by one and the sender resends the missing SCHC is increased by one and the sender resends the missing SCHC Fragments
Fragments again. When Attempts reaches MAX_ACK_REQUESTS, the sender again. When Attempts reaches MAX_ACK_REQUESTS, the sender sends a
sends a Sender-Abort message and releases all resources for the on- Sender-Abort message and releases all resources for the on-going
going fragmented SCHC Packet transmission. When the retransmission fragmented SCHC Packet transmission. When the retransmission of the
of the missing SCHC Fragments is finished, the sender starts missing SCHC Fragments is finished, the sender starts listening for a
listening for a SCHC ACK (even if an All-0 or an All-1 has not been SCHC ACK (even if an All-0 or an All-1 has not been sent during the
sent during the retransmission) and initializes the Retransmission retransmission) and initializes the Retransmission Timer.
Timer.
After sending an All-1 fragment, the sender listens for a SCHC ACK, After sending an All-1 fragment, the sender listens for a SCHC ACK,
initializes Attempts, and starts the Retransmission Timer. If the initializes Attempts, and starts the Retransmission Timer. If the
Retransmission Timer expires, Attempts is increased by one and an Retransmission Timer expires, Attempts is increased by one and an
empty All-1 fragment is sent to request the SCHC ACK for the last empty All-1 fragment is sent to request the SCHC ACK for the last
window. If Attempts reaches MAX_ACK_REQUESTS, the sender aborts the window. If Attempts reaches MAX_ACK_REQUESTS, the sender aborts the
on-going fragmented SCHC Packet transmission by transmitting the on-going fragmented SCHC Packet transmission by transmitting the
Sender-Abort fragment. Sender-Abort fragment.
At the end of any window, if the sender receives a SCK ACK with a At the end of any window, if the sender receives a SCK ACK with a
 End of changes. 11 change blocks. 
42 lines changed or deleted 42 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/