< draft-ietf-lpwan-ipv6-static-context-hc-20.txt   draft-ietf-lpwan-ipv6-static-context-hc-21.txt >
lpwan Working Group A. Minaburo lpwan Working Group A. Minaburo
Internet-Draft Acklio Internet-Draft Acklio
Intended status: Standards Track L. Toutain Intended status: Standards Track L. Toutain
Expires: January 23, 2020 IMT-Atlantique Expires: January 24, 2020 IMT-Atlantique
C. Gomez C. Gomez
Universitat Politecnica de Catalunya Universitat Politecnica de Catalunya
D. Barthel D. Barthel
Orange Labs Orange Labs
JC. Zuniga JC. Zuniga
SIGFOX SIGFOX
July 22, 2019 July 23, 2019
Static Context Header Compression (SCHC) and fragmentation for LPWAN, Static Context Header Compression (SCHC) and fragmentation for LPWAN,
application to UDP/IPv6 application to UDP/IPv6
draft-ietf-lpwan-ipv6-static-context-hc-20 draft-ietf-lpwan-ipv6-static-context-hc-21
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 designed for Low Power Wide Area functionalities. SCHC has been designed 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 device and the network side. This document defines a the LPWAN device and the network side. This document defines a
skipping to change at page 2, line 20 skipping to change at page 2, line 20
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 January 23, 2020. This Internet-Draft will expire on January 24, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 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 3, line 35 skipping to change at page 3, line 35
8.4. SCHC F/R modes . . . . . . . . . . . . . . . . . . . . . 33 8.4. SCHC F/R modes . . . . . . . . . . . . . . . . . . . . . 33
8.4.1. No-ACK mode . . . . . . . . . . . . . . . . . . . . . 33 8.4.1. No-ACK mode . . . . . . . . . . . . . . . . . . . . . 33
8.4.2. ACK-Always mode . . . . . . . . . . . . . . . . . . . 35 8.4.2. ACK-Always mode . . . . . . . . . . . . . . . . . . . 35
8.4.3. ACK-on-Error mode . . . . . . . . . . . . . . . . . . 41 8.4.3. ACK-on-Error mode . . . . . . . . . . . . . . . . . . 41
9. Padding management . . . . . . . . . . . . . . . . . . . . . 48 9. Padding management . . . . . . . . . . . . . . . . . . . . . 48
10. SCHC Compression for IPv6 and UDP headers . . . . . . . . . . 49 10. SCHC Compression for IPv6 and UDP headers . . . . . . . . . . 49
10.1. IPv6 version field . . . . . . . . . . . . . . . . . . . 49 10.1. IPv6 version field . . . . . . . . . . . . . . . . . . . 49
10.2. IPv6 Traffic class field . . . . . . . . . . . . . . . . 50 10.2. IPv6 Traffic class field . . . . . . . . . . . . . . . . 50
10.3. Flow label field . . . . . . . . . . . . . . . . . . . . 50 10.3. Flow label field . . . . . . . . . . . . . . . . . . . . 50
10.4. Payload Length field . . . . . . . . . . . . . . . . . . 50 10.4. Payload Length field . . . . . . . . . . . . . . . . . . 50
10.5. Next Header field . . . . . . . . . . . . . . . . . . . 50 10.5. Next Header field . . . . . . . . . . . . . . . . . . . 51
10.6. Hop Limit field . . . . . . . . . . . . . . . . . . . . 51 10.6. Hop Limit field . . . . . . . . . . . . . . . . . . . . 51
10.7. IPv6 addresses fields . . . . . . . . . . . . . . . . . 51 10.7. IPv6 addresses fields . . . . . . . . . . . . . . . . . 51
10.7.1. IPv6 source and destination prefixes . . . . . . . . 51 10.7.1. IPv6 source and destination prefixes . . . . . . . . 51
10.7.2. IPv6 source and destination IID . . . . . . . . . . 52 10.7.2. IPv6 source and destination IID . . . . . . . . . . 52
10.8. IPv6 extensions . . . . . . . . . . . . . . . . . . . . 52 10.8. IPv6 extensions . . . . . . . . . . . . . . . . . . . . 52
10.9. UDP source and destination port . . . . . . . . . . . . 52 10.9. UDP source and destination port . . . . . . . . . . . . 52
10.10. UDP length field . . . . . . . . . . . . . . . . . . . . 53 10.10. UDP length field . . . . . . . . . . . . . . . . . . . . 53
10.11. UDP Checksum field . . . . . . . . . . . . . . . . . . . 53 10.11. UDP Checksum field . . . . . . . . . . . . . . . . . . . 53
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 54 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 54
12. Security considerations . . . . . . . . . . . . . . . . . . . 54 12. Security considerations . . . . . . . . . . . . . . . . . . . 54
12.1. Security considerations for SCHC 12.1. Security considerations for SCHC
Compression/Decompression . . . . . . . . . . . . . . . 54 Compression/Decompression . . . . . . . . . . . . . . . 54
12.2. Security considerations for SCHC 12.2. Security considerations for SCHC
Fragmentation/Reassembly . . . . . . . . . . . . . . . . 55 Fragmentation/Reassembly . . . . . . . . . . . . . . . . 55
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 56 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 56
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 56 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 56
14.1. Normative References . . . . . . . . . . . . . . . . . . 56 14.1. Normative References . . . . . . . . . . . . . . . . . . 56
14.2. Informative References . . . . . . . . . . . . . . . . . 56 14.2. Informative References . . . . . . . . . . . . . . . . . 56
Appendix A. Compression Examples . . . . . . . . . . . . . . . . 57 Appendix A. Compression Examples . . . . . . . . . . . . . . . . 57
Appendix B. Fragmentation Examples . . . . . . . . . . . . . . . 60 Appendix B. Fragmentation Examples . . . . . . . . . . . . . . . 60
Appendix C. Fragmentation State Machines . . . . . . . . . . . . 67 Appendix C. Fragmentation State Machines . . . . . . . . . . . . 68
Appendix D. SCHC Parameters . . . . . . . . . . . . . . . . . . 73 Appendix D. SCHC Parameters . . . . . . . . . . . . . . . . . . 74
Appendix E. Supporting multiple window sizes for fragmentation . 75 Appendix E. Supporting multiple window sizes for fragmentation . 76
Appendix F. Downlink SCHC Fragment transmission . . . . . . . . 75 Appendix F. Downlink SCHC Fragment transmission . . . . . . . . 76
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 76 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 77
1. Introduction 1. Introduction
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 designed for Low Power Wide Area functionalities. SCHC has been designed for Low Power Wide Area
Networks (LPWAN). Networks (LPWAN).
LPWAN technologies impose some strict limitations on traffic. For LPWAN technologies impose some strict limitations on traffic. For
instance, devices sleep most of the time and may only receive data instance, devices sleep most of the time and may only receive data
skipping to change at page 50, line 40 skipping to change at page 50, line 40
o One possibility is to not compress the field and send the original o One possibility is to not compress the field and send the original
value. In the Rule, TV is not set to any particular value, MO is value. In the Rule, TV is not set to any particular value, MO is
set to "ignore" and CDA is set to "value-sent". set to "ignore" and CDA is set to "value-sent".
o If some upper bits in the field are constant and known, a better o If some upper bits in the field are constant and known, a better
option is to only send the LSBs. In the Rule, TV is set to a option is to only send the LSBs. In the Rule, TV is set to a
value with the stable known upper part, MO is set to MSB(x) and value with the stable known upper part, MO is set to MSB(x) and
CDA to LSB. CDA to LSB.
ECN functionality depends on both bits of the ECN field, which are
the 2 LSBs of this field, hence sending only a single LSB of this
field is NOT RECOMMENDED.
10.4. Payload Length field 10.4. Payload Length field
This field can be elided for the transmission on the LPWAN network. This field can be elided for the transmission on the LPWAN network.
The SCHC C/D recomputes the original payload length value. In the The SCHC C/D recomputes the original payload length value. In the
Field Descriptor, TV is not set, MO is set to "ignore" and CDA is Field Descriptor, TV is not set, MO is set to "ignore" and CDA is
"compute-*". "compute-*".
10.5. Next Header field 10.5. Next Header field
If the Next Header field does not vary and is known by both sides, If the Next Header field does not vary and is known by both sides,
skipping to change at page 56, line 7 skipping to change at page 56, line 10
spoofed ACK, with all bitmap bits set to 0, will trigger the spoofed ACK, with all bitmap bits set to 0, will trigger the
repetition of WINDOW_SIZE tiles. This protocol loop amplification repetition of WINDOW_SIZE tiles. This protocol loop amplification
depletes the energy source of the target node and consumes the depletes the energy source of the target node and consumes the
channel bandwidth. Similarly, a spoofed ACK REQ will trigger the channel bandwidth. Similarly, a spoofed ACK REQ will trigger the
sending of a SCHC ACK, which may be much larger than the ACK REQ if sending of a SCHC ACK, which may be much larger than the ACK REQ if
WINDOW_SIZE is large. These consequences should be borne in mind WINDOW_SIZE is large. These consequences should be borne in mind
when defining profiles for SCHC over specific LPWAN technologies. when defining profiles for SCHC over specific LPWAN technologies.
13. Acknowledgements 13. Acknowledgements
Thanks to Sergio Aguilar Romero, Carsten Bormann, Philippe Clavier, Thanks to Sergio Aguilar Romero, Carsten Bormann, David Black,
Daniel Ducuara Beltran Diego Dujovne, Eduardo Ingles Sanchez, Philippe Clavier, Daniel Ducuara Beltran Diego Dujovne, Eduardo
Arunprabhu Kandasamy, Suresh Krishnan, Rahul Jadhav, Sergio Lopez Ingles Sanchez, Arunprabhu Kandasamy, Suresh Krishnan, Rahul Jadhav,
Bernal, Antony Markovski, Alexander Pelov, Charles Perkins, Edgar Sergio Lopez Bernal, Antony Markovski, Alexander Pelov, Charles
Ramos, Shoichi Sakane, and Pascal Thubert for useful design Perkins, Edgar Ramos, Shoichi Sakane, and Pascal Thubert for useful
consideration and comments. design consideration and comments.
Carles Gomez has been funded in part by the Spanish Government Carles Gomez has been funded in part by the Spanish Government
(Ministerio de Educacion, Cultura y Deporte) through the Jose (Ministerio de Educacion, Cultura y Deporte) through the Jose
Castillejo grant CAS15/00336, and by the ERDF and the Spanish Castillejo grant CAS15/00336, and by the ERDF and the Spanish
Government through project TEC2016-79988-P. Part of his contribution Government through project TEC2016-79988-P. Part of his contribution
to this work has been carried out during his stay as a visiting to this work has been carried out during his stay as a visiting
scholar at the Computer Laboratory of the University of Cambridge. scholar at the Computer Laboratory of the University of Cambridge.
14. References 14. References
skipping to change at page 58, line 35 skipping to change at page 58, line 40
In some LPWAN technologies, only the Devs have a device ID. When In some LPWAN technologies, only the Devs have a device ID. When
such technologies are used, it is necessary to statically define an such technologies are used, it is necessary to statically define an
IID for the Link Local address for the SCHC C/D. IID for the Link Local address for the SCHC C/D.
Rule 0 Rule 0
+----------------+--+--+--+---------+--------+------------++------+ +----------------+--+--+--+---------+--------+------------++------+
| Field |FL|FP|DI| Value | Match | Comp Decomp|| Sent | | Field |FL|FP|DI| Value | Match | Comp Decomp|| Sent |
| | | | | | Opera. | Action ||[bits]| | | | | | | Opera. | Action ||[bits]|
+----------------+--+--+--+---------+---------------------++------+ +----------------+--+--+--+---------+---------------------++------+
|IPv6 version |4 |1 |Bi|6 | equal | not-sent || | |IPv6 Version |4 |1 |Bi|6 | ignore | not-sent || |
|IPv6 DiffServ |8 |1 |Bi|0 | equal | not-sent || | |IPv6 DiffServ |8 |1 |Bi|0 | equal | not-sent || |
|IPv6 Flow Label |20|1 |Bi|0 | equal | not-sent || | |IPv6 Flow Label |20|1 |Bi|0 | equal | not-sent || |
|IPv6 Length |16|1 |Bi| | ignore | comp-length|| | |IPv6 Length |16|1 |Bi| | ignore | compute-* || |
|IPv6 Next Header|8 |1 |Bi|17 | equal | not-sent || | |IPv6 Next Header|8 |1 |Bi|17 | equal | not-sent || |
|IPv6 Hop Limit |8 |1 |Bi|255 | ignore | not-sent || | |IPv6 Hop Limit |8 |1 |Bi|255 | ignore | not-sent || |
|IPv6 DevPrefix |64|1 |Bi|FE80::/64| equal | not-sent || | |IPv6 DevPrefix |64|1 |Bi|FE80::/64| equal | not-sent || |
|IPv6 DevIID |64|1 |Bi| | ignore | DevIID || | |IPv6 DevIID |64|1 |Bi| | ignore | DevIID || |
|IPv6 AppPrefix |64|1 |Bi|FE80::/64| equal | not-sent || | |IPv6 AppPrefix |64|1 |Bi|FE80::/64| equal | not-sent || |
|IPv6 AppIID |64|1 |Bi|::1 | equal | not-sent || | |IPv6 AppIID |64|1 |Bi|::1 | equal | not-sent || |
+================+==+==+==+=========+========+============++======+ +================+==+==+==+=========+========+============++======+
|UDP DevPort |16|1 |Bi|123 | equal | not-sent || | |UDP DevPort |16|1 |Bi|123 | equal | not-sent || |
|UDP AppPort |16|1 |Bi|124 | equal | not-sent || | |UDP AppPort |16|1 |Bi|124 | equal | not-sent || |
|UDP Length |16|1 |Bi| | ignore | comp-length|| | |UDP Length |16|1 |Bi| | ignore | compute-* || |
|UDP checksum |16|1 |Bi| | ignore | comp-chk || | |UDP checksum |16|1 |Bi| | ignore | compute-* || |
+================+==+==+==+=========+========+============++======+ +================+==+==+==+=========+========+============++======+
Rule 1 Rule 1
+----------------+--+--+--+---------+--------+------------++------+ +----------------+--+--+--+---------+--------+------------++------+
| Field |FL|FP|DI| Value | Match | Action || Sent | | Field |FL|FP|DI| Value | Match | Action || Sent |
| | | | | | Opera. | Action ||[bits]| | | | | | | Opera. | Action ||[bits]|
+----------------+--+--+--+---------+--------+------------++------+ +----------------+--+--+--+---------+--------+------------++------+
|IPv6 version |4 |1 |Bi|6 | equal | not-sent || | |IPv6 Version |4 |1 |Bi|6 | ignore | not-sent || |
|IPv6 DiffServ |8 |1 |Bi|0 | equal | not-sent || | |IPv6 DiffServ |8 |1 |Bi|0 | equal | not-sent || |
|IPv6 Flow Label |20|1 |Bi|0 | equal | not-sent || | |IPv6 Flow Label |20|1 |Bi|0 | equal | not-sent || |
|IPv6 Length |16|1 |Bi| | ignore | comp-length|| | |IPv6 Length |16|1 |Bi| | ignore | compute-* || |
|IPv6 Next Header|8 |1 |Bi|17 | equal | not-sent || | |IPv6 Next Header|8 |1 |Bi|17 | equal | not-sent || |
|IPv6 Hop Limit |8 |1 |Bi|255 | ignore | not-sent || | |IPv6 Hop Limit |8 |1 |Bi|255 | ignore | not-sent || |
|IPv6 DevPrefix |64|1 |Bi|[alpha/64, match- |mapping-sent|| 1 | |IPv6 DevPrefix |64|1 |Bi|[alpha/64, match- |mapping-sent|| 1 |
| | | | |fe80::/64] mapping| || | | | | | |fe80::/64] mapping| || |
|IPv6 DevIID |64|1 |Bi| | ignore | DevIID || | |IPv6 DevIID |64|1 |Bi| | ignore | DevIID || |
|IPv6 AppPrefix |64|1 |Bi|[beta/64,| match- |mapping-sent|| 2 | |IPv6 AppPrefix |64|1 |Bi|[beta/64,| match- |mapping-sent|| 2 |
| | | | |alpha/64,| mapping| || | | | | | |alpha/64,| mapping| || |
| | | | |fe80::64]| | || | | | | | |fe80::64]| | || |
|IPv6 AppIID |64|1 |Bi|::1000 | equal | not-sent || | |IPv6 AppIID |64|1 |Bi|::1000 | equal | not-sent || |
+================+==+==+==+=========+========+============++======+ +================+==+==+==+=========+========+============++======+
|UDP DevPort |16|1 |Bi|5683 | equal | not-sent || | |UDP DevPort |16|1 |Bi|5683 | equal | not-sent || |
|UDP AppPort |16|1 |Bi|5683 | equal | not-sent || | |UDP AppPort |16|1 |Bi|5683 | equal | not-sent || |
|UDP Length |16|1 |Bi| | ignore | comp-length|| | |UDP Length |16|1 |Bi| | ignore | compute-* || |
|UDP checksum |16|1 |Bi| | ignore | comp-chk || | |UDP checksum |16|1 |Bi| | ignore | compute-* || |
+================+==+==+==+=========+========+============++======+ +================+==+==+==+=========+========+============++======+
Rule 2 Rule 2
+----------------+--+--+--+---------+--------+------------++------+ +----------------+--+--+--+---------+--------+------------++------+
| Field |FL|FP|DI| Value | Match | Action || Sent | | Field |FL|FP|DI| Value | Match | Action || Sent |
| | | | | | Opera. | Action ||[bits]| | | | | | | Opera. | Action ||[bits]|
+----------------+--+--+--+---------+--------+------------++------+ +----------------+--+--+--+---------+--------+------------++------+
|IPv6 version |4 |1 |Bi|6 | equal | not-sent || | |IPv6 Version |4 |1 |Bi|6 | ignore | not-sent || |
|IPv6 DiffServ |8 |1 |Bi|0 | equal | not-sent || | |IPv6 DiffServ |8 |1 |Bi|0 | equal | not-sent || |
|IPv6 Flow Label |20|1 |Bi|0 | equal | not-sent || | |IPv6 Flow Label |20|1 |Bi|0 | equal | not-sent || |
|IPv6 Length |16|1 |Bi| | ignore | comp-length|| | |IPv6 Length |16|1 |Bi| | ignore | compute-* || |
|IPv6 Next Header|8 |1 |Bi|17 | equal | not-sent || | |IPv6 Next Header|8 |1 |Bi|17 | equal | not-sent || |
|IPv6 Hop Limit |8 |1 |Up|255 | ignore | not-sent || | |IPv6 Hop Limit |8 |1 |Up|255 | ignore | not-sent || |
|IPv6 Hop Limit |8 |1 |Dw| | ignore | value-sent || 8 | |IPv6 Hop Limit |8 |1 |Dw| | ignore | value-sent || 8 |
|IPv6 DevPrefix |64|1 |Bi|alpha/64 | equal | not-sent || | |IPv6 DevPrefix |64|1 |Bi|alpha/64 | equal | not-sent || |
|IPv6 DevIID |64|1 |Bi| | ignore | DevIID || | |IPv6 DevIID |64|1 |Bi| | ignore | DevIID || |
|IPv6 AppPrefix |64|1 |Bi|gamma/64 | equal | not-sent || | |IPv6 AppPrefix |64|1 |Bi|gamma/64 | equal | not-sent || |
|IPv6 AppIID |64|1 |Bi|::1000 | equal | not-sent || | |IPv6 AppIID |64|1 |Bi|::1000 | equal | not-sent || |
+================+==+==+==+=========+========+============++======+ +================+==+==+==+=========+========+============++======+
|UDP DevPort |16|1 |Bi|8720 | MSB(12)| LSB || 4 | |UDP DevPort |16|1 |Bi|8720 | MSB(12)| LSB || 4 |
|UDP AppPort |16|1 |Bi|8720 | MSB(12)| LSB || 4 | |UDP AppPort |16|1 |Bi|8720 | MSB(12)| LSB || 4 |
|UDP Length |16|1 |Bi| | ignore | comp-length|| | |UDP Length |16|1 |Bi| | ignore | compute-* || |
|UDP checksum |16|1 |Bi| | ignore | comp-chk || | |UDP checksum |16|1 |Bi| | ignore | compute-* || |
+================+==+==+==+=========+========+============++======+ +================+==+==+==+=========+========+============++======+
Figure 26: Context Rules Figure 26: Context Rules
All the fields described in the three Rules depicted on Figure 26 are All the fields described in the three Rules depicted on Figure 26 are
present in the IPv6 and UDP headers. The DevIID-DID value is found present in the IPv6 and UDP headers. The DevIID-DID value is found
in the L2 header. in the L2 header.
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 each port number to 4 bits. The third Rule compresses each port number to 4 bits.
 End of changes. 19 change blocks. 
28 lines changed or deleted 34 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/