| < draft-ietf-lpwan-schc-over-lorawan-00.txt | draft-ietf-lpwan-schc-over-lorawan-01.txt > | |||
|---|---|---|---|---|
| lpwan Working Group N. Sornin, Ed. | lpwan Working Group O. Gimenez, Ed. | |||
| Internet-Draft M. Coracin | Internet-Draft Semtech | |||
| Intended status: Informational Semtech | Intended status: Informational I. Petrov, Ed. | |||
| Expires: October 21, 2019 I. Petrov | Expires: December 28, 2019 Acklio | |||
| Acklio | June 26, 2019 | |||
| A. Yegin | ||||
| Actility | ||||
| J. Catalano | ||||
| Kerlink | ||||
| V. Audebert | ||||
| EDF R&D | ||||
| April 19, 2019 | ||||
| Static Context Header Compression (SCHC) over LoRaWAN | Static Context Header Compression (SCHC) over LoRaWAN | |||
| draft-ietf-lpwan-schc-over-lorawan-00 | draft-ietf-lpwan-schc-over-lorawan-01 | |||
| Abstract | Abstract | |||
| The Static Context Header Compression (SCHC) specification describes | The Static Context Header Compression (SCHC) specification describes | |||
| generic header compression and fragmentation techniques for LPWAN | generic header compression and fragmentation techniques for LPWAN | |||
| (Low Power Wide Area Networks) technologies. SCHC is a generic | (Low Power Wide Area Networks) technologies. SCHC is a generic | |||
| mechanism designed for great flexibility, so that it can be adapted | mechanism designed for great flexibility, so that it can be adapted | |||
| for any of the LPWAN technologies. | for any of the LPWAN technologies. | |||
| This document provides the adaptation of SCHC for use in LoRaWAN | This document provides the adaptation of SCHC for use in LoRaWAN | |||
| networks, and provides elements such as efficient parameterization | networks, and provides elements such as efficient parameterization | |||
| and modes of operation. | and modes of operation. This is called a profile. | |||
| 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 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 October 21, 2019. | This Internet-Draft will expire on December 28, 2019. | |||
| 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 2, line 25 ¶ | skipping to change at page 2, line 15 ¶ | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Static Context Header Compression Overview . . . . . . . . . 3 | 3. Static Context Header Compression Overview . . . . . . . . . 3 | |||
| 4. LoRaWAN Architecture . . . . . . . . . . . . . . . . . . . . 4 | 4. LoRaWAN Architecture . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4.1. Device classes (A, B, C) and interactions . . . . . . . . 5 | 4.1. End-Device classes (A, B, C) and interactions . . . . . . 6 | |||
| 4.2. Device addressing . . . . . . . . . . . . . . . . . . . . 6 | 4.2. End-Device addressing . . . . . . . . . . . . . . . . . . 7 | |||
| 4.3. General Message Types . . . . . . . . . . . . . . . . . . 7 | 4.3. General Message Types . . . . . . . . . . . . . . . . . . 7 | |||
| 4.4. LoRaWAN MAC Frames . . . . . . . . . . . . . . . . . . . 7 | 4.4. LoRaWAN MAC Frames . . . . . . . . . . . . . . . . . . . 8 | |||
| 5. SCHC over LoRaWAN . . . . . . . . . . . . . . . . . . . . . . 7 | 5. SCHC-over-LoRaWAN . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5.1. Rule ID management . . . . . . . . . . . . . . . . . . . 7 | 5.1. LoRaWAN FPort . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5.2. IID computation . . . . . . . . . . . . . . . . . . . . . 8 | 5.2. Rule ID management . . . . . . . . . . . . . . . . . . . 9 | |||
| 5.3. No compression packets are sent using Rule ID 7. . . . . 8 | 5.3. IID computation . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 5.4. Fragmentation . . . . . . . . . . . . . . . . . . . . . . 8 | 5.4. Fragmentation . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 5.4.1. Uplink fragmentation: From device to gateway . . . . 8 | 5.5. DTag . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 5.4.2. Downlinks: From gateway to device . . . . . . . . . . 9 | 5.5.1. Uplink fragmentation: From device to SCHC gateway . . 10 | |||
| 6. Security considerations . . . . . . . . . . . . . . . . . . . 13 | 5.5.2. Downlink fragmentation: From SCHC gateway to device . 13 | |||
| 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 | 6. Security considerations . . . . . . . . . . . . . . . . . . . 16 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 13 | Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 13 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 14 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 17 | |||
| Appendix B. Note . . . . . . . . . . . . . . . . . . . . . . . . 14 | 9.2. Informative References . . . . . . . . . . . . . . . . . 18 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 | Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| A.1. Uplink - Compression example - No fragmentation . . . . . 18 | ||||
| A.2. Uplink - Compression and fragmentation example . . . . . 19 | ||||
| A.3. Downlink . . . . . . . . . . . . . . . . . . . . . . . . 20 | ||||
| Appendix B. Note . . . . . . . . . . . . . . . . . . . . . . . . 20 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 20 | ||||
| 1. Introduction | 1. Introduction | |||
| The Static Context Header Compression (SCHC) specification | The Static Context Header Compression (SCHC) specification | |||
| [I-D.ietf-lpwan-ipv6-static-context-hc] describes generic header | [I-D.ietf-lpwan-ipv6-static-context-hc] describes generic header | |||
| compression and fragmentation techniques that can be used on all | compression and fragmentation techniques that can be used on all | |||
| LPWAN (Low Power Wide Area Networks) technologies defined in | LPWAN (Low Power Wide Area Networks) technologies defined in | |||
| [I-D.ietf-lpwan-overview]. Even though those technologies share a | [RFC8376]. Even though those technologies share a great number of | |||
| great number of common features like start-oriented topologies, | common features like star-oriented topologies, network architecture, | |||
| network architecture, devices with mostly quite predictable | devices with mostly quite predictable communications, etc; they do | |||
| communications, etc; they do have some slight differences in respect | have some slight differences in respect of payload sizes, | |||
| of payload sizes, reactiveness, etc. | reactiveness, etc. | |||
| SCHC gives a generic framework that enables those devices to | SCHC gives a generic framework that enables those devices to | |||
| communicate with other Internet networks. However, for efficient | communicate with other Internet networks. However, for efficient | |||
| performance, some parameters and modes of operation need to be set | performance, some parameters and modes of operation need to be set | |||
| appropriately for each of the LPWAN technologies. | appropriately for each of the LPWAN technologies. | |||
| This document describes the efficient parameters and modes of | This document describes the efficient parameters and modes of | |||
| operation when SCHC is used over LoRaWAN networks. | operation when SCHC is used over LoRaWAN networks. | |||
| 2. Terminology | 2. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| This section defines the terminology and acronyms used in this | This section defines the terminology and acronyms used in this | |||
| document. For all other definitions, please look up the SCHC | document. For all other definitions, please look up the SCHC | |||
| specification [I-D.ietf-lpwan-ipv6-static-context-hc]. | specification [I-D.ietf-lpwan-ipv6-static-context-hc]. | |||
| o DevEUI: an IEEE EUI-64 identifier used to identify the device | o DevEUI: an IEEE EUI-64 identifier used to identify the end-device | |||
| during the procedure while joining the network (Join Procedure) | during the procedure while joining the network (Join Procedure) | |||
| o DevAddr: a 32-bit non-unique identifier assigned to a device | o DevAddr: a 32-bit non-unique identifier assigned to a end-device | |||
| statically or dynamically after a Join Procedure (depending on the | statically or dynamically after a Join Procedure (depending on the | |||
| activation mode) | activation mode) | |||
| o TBD: all significant LoRaWAN-related terms. | o TBD: all significant LoRaWAN-related terms. | |||
| 3. Static Context Header Compression Overview | 3. Static Context Header Compression Overview | |||
| This section contains a short overview of Static Context Header | This section contains a short overview of Static Context Header | |||
| Compression (SCHC). For a detailed description, refer to the full | Compression (SCHC). For a detailed description, refer to the full | |||
| specification [I-D.ietf-lpwan-ipv6-static-context-hc]. | specification [I-D.ietf-lpwan-ipv6-static-context-hc]. | |||
| Static Context Header Compression (SCHC) avoids context | Static Context Header Compression (SCHC) avoids context | |||
| synchronization, which is the most bandwidth-consuming operation in | synchronization, based on the fact that the nature of data flows is | |||
| other header compression mechanisms such as RoHC [RFC5795]. Based on | highly predictable in LPWAN networks, some static contexts may be | |||
| the fact that the nature of data flows is highly predictable in LPWAN | stored on the Device (Dev). The contexts must be stored in both | |||
| networks, some static contexts may be stored on the Device (Dev). | ends, and it can either be learned by a provisioning protocol or by | |||
| The contexts must be stored in both ends, and it can either be | out-of-band means or it can be pre-provisioned, etc. The way the | |||
| learned by a provisioning protocol or by out of band means or it can | context is learned on both sides is out of the scope of this | |||
| be pre-provisioned, etc. The way the context is learned on both | 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 | |UDP | |UDP | | |||
| | IPv6 | | IPv6 | | | IPv6 | |IPv6| |IPv6| |IPv6| | |||
| | | | | | | | | | | | | | | |||
| | SCHC C/D | | | | |SCHC C/D and F/R| | | | | | | | |||
| | (context) | | | | +--------+-------+ +----+ +----+ +----+ | |||
| +-------+------+ +-------+------+ | | +--+ +----+ +----+ +----+ . . . | |||
| | +--+ +----+ +---------+ . | +~ |RG| === |NGW | == |SCHC| == |SCHC|...... Internet .... | |||
| +~~ |RG| === |NGW | === |SCHC C/D |... Internet .. | +--+ +----+ |F/R | |C/D | | |||
| +--+ +----+ |(context)| | +----+ +----+ | |||
| +---------+ | ||||
| Figure 1: Architecture | Figure 1: Architecture | |||
| Figure 1 represents the architecture for compression/decompression, | Figure 1 represents the architecture for compression/decompression, | |||
| it is based on [I-D.ietf-lpwan-overview] terminology. The Device is | it is based on [RFC8376] terminology. The Device is sending | |||
| sending applications flows using IPv6 or IPv6/UDP protocols. These | applications flows using IPv6 or IPv6/UDP protocols. These flow | |||
| flows are compressed by an Static Context Header Compression | might be fragemented (SCHC F/R), and compressed by an Static Context | |||
| Compressor/Decompressor (SCHC C/D) to reduce headers size. Resulting | Header Compression Compressor/Decompressor (SCHC C/D) to reduce | |||
| information is sent on a layer two (L2) frame to a LPWAN Radio | headers size. Resulting information is sent on a layer two (L2) | |||
| Network (RG) which forwards the frame to a Network Gateway (NGW). | frame to a LPWAN Radio Network (RG) which forwards the frame to a | |||
| The NGW sends the data to a SCHC C/D for decompression which shares | Network Gateway (NGW). The NGW sends the data to a SCHC F/R for | |||
| the same rules with the Dev. The SCHC C/D can be located on the | defragmentation, if required, then C/D for decompression which shares | |||
| Network Gateway (NGW) or in another place as long as a tunnel is | the same rules with the device. The SCHC F/R and C/D can be located | |||
| established between the NGW and the SCHC C/D. The SCHC C/D in both | on the Network Gateway (NGW) or in another place as long as a tunnel | |||
| sides must share the same set of Rules. After decompression, the | is established between the NGW and the SCHC F/R, then SCHC F/R and | |||
| packet can be sent on the Internet to one or several LPWAN | SCHC C/D. The SCHC C/D in both sides must share the same set of | |||
| Application Servers (App). | Rules. After decompression, the packet can be sent on the Internet | |||
| to one or several LPWAN Application Servers (App). | ||||
| The SCHC C/D process is bidirectional, so the same principles can be | The SCHC F/R and SCHC C/D process is bidirectional, so the same | |||
| applied in the other direction. | principles can be applied in the other direction. | |||
| In a LoRaWAN network, the RG is called a Gateway, the NGW is Network | In a LoRaWAN network, the RG is called a Gateway, the NGW is Network | |||
| Server, and the SCHC C/D can be embedded in different places, for | Server, and the SCHC C/D is an Application Server. It can be | |||
| example in the Network Server and/or the Application Server. | provided by the Network Server or any third party software. Figure 1 | |||
| can be map in LoRaWAN terminology to: | ||||
| Next steps for this section: detailed overview of the LoRaWAN | Dev App | |||
| architecture and its mapping to the SCHC architecture. | +----------------+ +----+ +----+ +----+ | |||
| | App1 App2 App3 | |App1| |App2| |App3| | ||||
| | | | | | | | | | ||||
| | UDP | |UDP | |UDP | |UDP | | ||||
| | IPv6 | |IPv6| |IPv6| |IPv6| | ||||
| | | | | | | | | | ||||
| |SCHC C/D and F/R| | | | | | | | ||||
| +--------+-------+ +----+ +----+ +----+ | ||||
| | +-------+ +-------+ +----------------+ . . . | ||||
| +~ |Gateway| === |Network| == |Application |...... Internet .... | ||||
| +-------+ |server | |server F/R - C/D| | ||||
| +-------+ +----------------+ | ||||
| Figure 2: Architecture | ||||
| 4. LoRaWAN Architecture | 4. LoRaWAN Architecture | |||
| An overview of LoRaWAN [lora-alliance-spec] protocol and architecture | An overview of LoRaWAN [lora-alliance-spec] protocol and architecture | |||
| is described in [I-D.ietf-lpwan-overview]. Mapping between the LPWAN | is described in [RFC8376]. Mapping between the LPWAN architecture | |||
| architecture entities as described in | entities as described in [I-D.ietf-lpwan-ipv6-static-context-hc] and | |||
| the ones in [lora-alliance-spec] is as follows: | ||||
| [I-D.ietf-lpwan-ipv6-static-context-hc] and the ones in | ||||
| [lora-alliance-spec] is as follows: | ||||
| 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 very high density of devices per | actuators, etc.). There can be a very high density of devices per | |||
| radio gateway. This entity maps to the LoRaWAN End-device. | radio gateway (LoRaWAN gateway). This entity maps to the LoRaWAN | |||
| End-Device. | ||||
| o The Radio Gateway (RGW), which is the end point of the constrained | o The Radio Gateway (RGW), which is the end point of the constrained | |||
| link. This entity maps to the LoRaWAN Gateway. | link. This entity maps to the LoRaWAN Gateway. | |||
| 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. This entity maps to the LoRaWAN | Radio Gateway and the Internet. This entity maps to the LoRaWAN | |||
| Network Server. | Network Server. | |||
| o LPWAN-AAA Server, which controls the user authentication and the | o LPWAN-AAA Server, which controls the user authentication and the | |||
| applications. This entity maps to the LoRaWAN Join Server. | applications. This entity maps to the LoRaWAN Join Server. | |||
| o Application Server (App). The same terminology is used in LoRaWAN. | o Application Server (App). The same terminology is used in LoRaWAN. | |||
| In that case, the application server will be the SCHC gateway, doing | ||||
| C/D and F/R. | ||||
| () () () | +------+ | () () () | +------+ | |||
| () () () () / \ +---------+ | Join | | () () () () / \ +---------+ | Join | | |||
| () () () () () / \======| ^ |===|Server| +-----------+ | () () () () () / \======| ^ |===|Server| +-----------+ | |||
| () () () | | <--|--> | +------+ |Application| | () () () | | <--|--> | +------+ |Application| | |||
| () () () () / \==========| v |=============| Server | | () () () () / \==========| v |=============| Server | | |||
| () () () / \ +---------+ +-----------+ | () () () / \ +---------+ +-----------+ | |||
| End-Devices Gateways Network Server | End-Devices Gateways Network Server | |||
| Figure 2: LPWAN Architecture | Figure 3: LPWAN Architecture | |||
| SCHC C/D (Compressor/Decompressor) and SCHC Fragmentation are | SCHC C/D (Compressor/Decompressor) and SCHC F/R (Fragmentation/ | |||
| performed on the LoRaWAN End-device and the Application Server. | Reassembly) are performed on the LoRaWAN End-Device and the | |||
| While the point-to-point link between the End-device and the | Application Server (called SCHC gateway). While the point-to-point | |||
| Application Server constitutes single IP hop, the ultimate end-point | link between the End-Device and the Application Server constitutes | |||
| of the IP communication may be an Internet node beyond the | single IP hop, the ultimate end-point of the IP communication may be | |||
| Application Server. In other words, the LoRaWAN Application Server | an Internet node beyond the Application Server. In other words, the | |||
| acts as the first hop IP router for the End-device. Note that the | LoRaWAN Application Server (SCHC gateway) acts as the first hop IP | |||
| Application Server and Network Server may be co-located, which | router for the End-Device. The Application Server and Network Server | |||
| effectively turns the Network/Application Server into the first hop | may be co-located, which effectively turns the Network/Application | |||
| IP router. | Server into the first hop IP router. | |||
| 4.1. Device classes (A, B, C) and interactions | 4.1. End-Device classes (A, B, C) and interactions | |||
| The LoRaWAN MAC layer supports 3 classes of devices named A,B and C. | The LoRaWAN MAC layer supports 3 classes of end-devices named A, B | |||
| All devices implement the classA, some devices implement classA+B or | and C. All end-devices implement the classA, some end-devices | |||
| class A+C. ClassB and classC are mutually exclusive. | implement classA+B or class A+C. ClassB and classC are mutually | |||
| exclusive. | ||||
| o *ClassA*: The classA is the simplest class of devices. The device | o *ClassA*: The classA is the simplest class of end-devices. The | |||
| is allowed to transmit at any time, randomly selecting a | end-device is allowed to transmit at any time, randomly selecting | |||
| communication channel. The network may reply with a downlink in | a communication channel. The network may reply with a downlink in | |||
| one of the 2 receive windows immediately following the uplinks. | one of the 2 receive windows immediately following the uplinks. | |||
| Therefore, the network cannot initiate a downlink, it has to wait | Therefore, the network cannot initiate a downlink, it has to wait | |||
| for the next uplink from the device to get a downlink opportunity. | for the next uplink from the end-device to get a downlink | |||
| The classA is the lowest power device class. | opportunity. The classA is the lowest power end-device class. | |||
| o *ClassB*: classB devices implement all the functionalities of | o *ClassB*: classB end-devices implement all the functionalities of | |||
| classA devices, but also schedule periodic listen windows. | classA end-devices, but also schedule periodic listen windows. | |||
| Therefore, as opposed the classA devices, classB devices can | Therefore, as opposed the classA end-devices, classB end-devices | |||
| receive downlink that are initiated by the network and not | can receive downlink that are initiated by the network and not | |||
| following an uplink. There is a trade-off between the periodicity | following an uplink. There is a trade-off between the periodicity | |||
| of those scheduled classB listen windows and the power consumption | of those scheduled classB listen windows and the power consumption | |||
| of the device. The lower the downlink latency, the higher the | of the end-device. The lower the downlink latency, the higher the | |||
| power consumption. | power consumption. | |||
| o *ClassC*: classC devices implement all the functionalities of | o *ClassC*: classC end-devices implement all the functionalities of | |||
| classA devices, but keep their receiver open whenever they are not | classA end-devices, but keep their receiver open whenever they are | |||
| transmitting. ClassC devices can receive downlinks at any time at | not transmitting. ClassC end-devices can receive downlinks at any | |||
| the expense of a higher power consumption. Battery powered | time at the expense of a higher power consumption. Battery | |||
| devices can only operate in classC for a limited amount of time | powered end-devices can only operate in classC for a limited | |||
| (for example for a firmware upgrade over the air). Most of the | amount of time (for example for a firmware upgrade over-the-air). | |||
| classC devices are main powered (for example Smart Plugs). | Most of the classC end-devices are main powered (for example Smart | |||
| Plugs). | ||||
| 4.2. Device addressing | 4.2. End-Device addressing | |||
| LoRaWAN devices use a 32bits network address (devAddr) to communicate | LoRaWAN end-devices use a 32 bits network address (devAddr) to | |||
| with the network over the air. However that address might be reused | communicate with the network over-the-air. However, that address | |||
| several time on the same network at the same time for different | might be reused several time on the same network at the same time for | |||
| devices. Devices using the same devAddr are distinguish by the | different end-devices. End-devices using the same devAddr are | |||
| network server based on the cryptographic signature appended to every | distinguish by the Network Server based on the cryptographic | |||
| single LoRaWAN MAC frame, as all devices use different security keys. | signature appended to every single LoRaWAN MAC frame, as all end- | |||
| To communicate with the SCHC gateway the network server MUST identify | devices use different security keys. To communicate with the SCHC | |||
| the devices by a unique 64bits device ID called the devEUI. Unlike | gateway the Network Server MUST identify the end-devices by a unique | |||
| devAddr, devEUI is guaranteed to be unique for every single device | 64bits device ID called the devEUI. Unlike devAddr, devEUI is | |||
| across all networks. The devEUI is assigned to the device during the | guaranteed to be unique for every single end-device across all | |||
| manufacturing process by the device's manufacturer. The devEUI is | networks. The devEUI is assigned to the end-device during the | |||
| built like an Ethernet MAC address by concatenating the | manufacturing process by the end-device's manufacturer. It is built | |||
| manufacturer's IEEE 24bits OUI field with a 40bits serial number. | like an Ethernet MAC address by concatenating the manufacturer's IEEE | |||
| The network server translates the devAddr into a devEUI in the uplink | OUI field with a vendor unique number. ex: 24bits OUI is | |||
| direction and reciprocally on the downlink direction. | concatenated with a 40 bits serial number. The Network Server | |||
| translates the devAddr into a devEUI in the uplink direction and | ||||
| reciprocally on the downlink direction. | ||||
| +--------+ +---------------+ +--------------------+ | +--------+ +----------+ +---------+ +----------+ | |||
| | device | <=====> | Network Server| <====> | Application Server | | | End- | <=====> | Network | <====> | SCHC | <========> | Internet | | |||
| +--------+ devAddr +---------------+ devEUI +--------------------+ | | Device | devAddr | Server | devEUI | Gateway | IPv6/UDP | | | |||
| +--------+ +----------+ +---------+ +----------+ | ||||
| Figure 3: LoRaWAN addresses | Figure 4: LoRaWAN addresses | |||
| 4.3. General Message Types | 4.3. General Message Types | |||
| o Confirmed messages: | o *Confirmed messages*: The sender asks the receiver to acknowledge | |||
| the message. | ||||
| o Unconfirmed messages: | o *Unconfirmed messages*: The sender does not ask the receiver to | |||
| acknowledge the message. | ||||
| As SCHC defines its own acknowledgment mechanisms, SCHC does not | ||||
| require to use confirmed messages. | ||||
| 4.4. LoRaWAN MAC Frames | 4.4. LoRaWAN MAC Frames | |||
| o JoinRequest | o *JoinRequest*: This message is used by a end-device to join a | |||
| network. It contains the end-device's unique identifier devEUI | ||||
| and a random nonce that will be used for session key derivation. | ||||
| o JoinAccept | o *JoinAccept*: To on-board a end-device, the Network Server | |||
| responds to the JoinRequest end-device's message with a JoinAccept | ||||
| message. That message is encrypted with the end-device's AppKey | ||||
| and contains (amongst other fields) the major network's settings | ||||
| and a network random nonce used to derive the session keys. | ||||
| o Data | o *Data* | |||
| 5. SCHC over LoRaWAN | 5. SCHC-over-LoRaWAN | |||
| 5.1. Rule ID management | 5.1. LoRaWAN FPort | |||
| The LoRaWAN MAC layers features a port field in all frames. This | The LoRaWAN MAC layers features a frame port field in all frames. | |||
| port field (FPort) is 8bit long and the values from 1 to 220 can be | This field (FPort) is 8-bit long and the values from 1 to 223 can be | |||
| used. SCHC over LoRaWAN uses 2 contiguous FPort value to separate | used. It allows LoRaWAN network and application to identify data. | |||
| the uplink SCHC traffic from the downlink and avoid any confusion. | ||||
| Those FPorts are called FPortUp and FPortDwn. Those FPorts can use | ||||
| arbitrary values inside the allowed Fport range but must be shared by | ||||
| the end-device and SCHC gateway. | ||||
| SCHC over LoRAWAN SHOULD support encoding RuleID on 3 bits, there are | A fragmentation session with application payload transferred from | |||
| therefore 8 possible RuleIds on both uplink and downlink direction. | device to server, is called uplink fragmentation session. It uses | |||
| FPortUpShort or FPortUpDefault for data uplink and its associated | ||||
| SCHC control downlinks. The other way, a fragmentation session with | ||||
| application payload transferred from server to device, is called | ||||
| downlink fragmentation session. It uses FPortDown for data downlink | ||||
| and its associated SCHC control uplinks. | ||||
| The RuleID 0 is reserved for fragmentation in both directions. The 7 | FPorts can use arbitrary values inside the allowed FPort range and | |||
| remaining RuleIDs are available for IPV6 header compression. Uplink | must be shared by the end-device, the Network Server and SCHC | |||
| (on FPortUp) and downlink (on FportDwn) RuleIDs are independent. The | gateway. The uplink and downlink SCHC ports must be different. In | |||
| same RuleID may have different meanings on the uplink and downlink | order to improve interoperability, it is recommended to use: | |||
| paths. | ||||
| The only uplink messages using the FportDwn port are the | o FPortUpShort = 20 | |||
| fragmentation SCHC ACKs messages of a downlink fragmentation session. | ||||
| Similarly, the only downlink messages using the FportUp port are the | ||||
| fragmentation SCHC ACKs messages of an uplink fragmentation session | ||||
| 5.2. IID computation | o FPortUpDefault = 21 | |||
| TBD (To discuss with the SCHC authors). | o FPortDown = 22 | |||
| 5.3. No compression packets are sent using Rule ID 7. | Those are recommended values and are application defined. Also | |||
| application can have multiple fragmentation session between a device | ||||
| and one or several SCHC gateways. A set of three FPort values is | ||||
| required for each gateway instance the device is required to | ||||
| communicate with. | ||||
| The only uplink messages using the FPortDown port are the | ||||
| fragmentation SCHC control messages of a downlink fragmentation | ||||
| session (ex ACKs). Similarly, the only downlink messages using the | ||||
| FPortUpShort or FPortUpDefault ports are the fragmentation SCHC | ||||
| control messages of an uplink fragmentation session. | ||||
| 5.2. Rule ID management | ||||
| SCHC-over-LoRaWAN SHOULD support encoding RuleID on 6 bits (64 | ||||
| possible rules). | ||||
| The RuleID 0 is reserved for fragmentation. The RuleID 63 is used to | ||||
| tag packets for which SCHC compression was not possible (no matching | ||||
| Rule was found). | ||||
| The remaining RuleIDs are available for compression. RuleIDs are | ||||
| shared between uplink and downlink sessions. A RuleID different from | ||||
| 0 means that the fragmentation is not used, thus the packet should be | ||||
| send to C/D layer. | ||||
| 5.3. IID computation | ||||
| As LoRaWAN network uses unique EUI-64 per end-device, the Interface | ||||
| IDentifier is the LoRaWAN DevEUI. It is compliant with [RFC4291] and | ||||
| IID starting with binary 000 must enforce the 64-bits rule. TODO: | ||||
| Derive IID from DevEUI with privacy constraints ? Ask working group ? | ||||
| 5.4. Fragmentation | 5.4. Fragmentation | |||
| The L2 word size used by LoRaWAN is 1 octet (8 bits). The SCHC | The L2 word size used by LoRaWAN is 1 byte (8 bits). The SCHC | |||
| fragmentation over LoRaWAN exclusively uses the ACK-always mode. A | fragmentation over LoRaWAN uses the ACK-on-Error for uplink | |||
| LoRaWAN device cannot support simultaneous interleaved fragmentation | fragmentation and Ack-Always for downlink fragmentation. A LoRaWAN | |||
| end-device cannot support simultaneous interleaved fragmentation | ||||
| sessions in the same direction (uplink or downlink). This means that | sessions in the same direction (uplink or downlink). This means that | |||
| only a single fragmented IPV6 datagram may be transmitted and/or | only a single fragmented IPv6 datagram may be transmitted and/or | |||
| received by the device at a given moment. The fragmentation | received by the end-device at a given moment. | |||
| parameters are different for uplink and downlink fragmentation | ||||
| sessions and are successively described in the next sections. | ||||
| 5.4.1. Uplink fragmentation: From device to gateway | The fragmentation parameters are different for uplink and downlink | |||
| fragmentation sessions and are successively described in the next | ||||
| sections. | ||||
| 5.5. DTag | ||||
| A LoRaWAN device cannot interleave several fragmented SCHC datagrams. | ||||
| This one bit field is used to distinguish two consecutive | ||||
| fragmentation sessions. | ||||
| _Note_: While it is used to recover faster from transmission errors, | ||||
| it SHALL not be considered as the only way to distinguish two | ||||
| fragmentation sessions. | ||||
| 5.5.1. Uplink fragmentation: From device to SCHC gateway | ||||
| In that case the device is the fragmentation transmitter, and the | In that case the device is the fragmentation transmitter, and the | |||
| SCHC gateway the fragmentation receiver. | SCHC gateway the fragmentation receiver. Two fragmentation rules are | |||
| defined regarding the *FPort*: | ||||
| o SCHC fragmentation reliability mode : "ACK_ALWAYS" | o *FPortUpShort*: SCHC header is only one byte. Used when | |||
| fragmentation is required and payload size is less than 381 bytes. | ||||
| o Window size: 8, the FCN field is encoded on 3 bits | o *FPortUpDefault*: SCHC header is two bytes. Used for all other | |||
| cases: no fragmentation required or payload size is between 382 | ||||
| and 1524 byte. | ||||
| o DTag : 1bit. this field is used to clearly separate two | *Both rules share common parameters:* | |||
| consecutive fragmentation sessions. A LoRaWAN device cannot | ||||
| interleave several fragmented SCHC datagrams. | ||||
| o MIC calculation algorithm: CRC32 using 0xEDB88320 (i.e. the | o *SCHC fragmentation reliability mode*: "ACK-on-Error" | |||
| o *DTag*: size is 1 bit. | ||||
| o *FCN*: The FCN field is encoded on N = 7 bits, so WINDOW_SIZE = | ||||
| 127 tiles are allowed in a window (FCN=All-1 is reserved for | ||||
| SCHC). | ||||
| o *MIC calculation algorithm*: CRC32 using 0xEDB88320 (i.e. the | ||||
| reverse representation of the polynomial used e.g. in the Ethernet | reverse representation of the polynomial used e.g. in the Ethernet | |||
| standard [RFC3385]) | standard [RFC3385]) as suggested in | |||
| [I-D.ietf-lpwan-ipv6-static-context-hc]. | ||||
| o Retransmission Timer and inactivity Timer: LoRaWAN devices do not | o *MAX_ACK_REQUESTS*: 8 | |||
| implement a "retransmission timer". At the end of a window the | ||||
| ACK corresponding to this window is transmitted by the network | ||||
| gateway in the RX1 or RX2 receive slot of the device. If this ACK | ||||
| is not received the device sends an all-0 (or an all-1) fragment | ||||
| with no payload to request an ACK retransmission. The periodicity | ||||
| between retransmission of the all-0/all-1 fragments is device/ | ||||
| application specific and may be different for each device (not | ||||
| specified). The gateway implements an "inactivity timer". The | ||||
| default recommended duration of this timer is 12h. This value is | ||||
| mainly driven by application requirements and may be changed. | ||||
| | RuleID | DTag | W | FCN | Payload | | o *Tile*: size is 3 bytes (24 bits) | |||
| + ------ + ----- + ----- | ------ + ------- + | ||||
| | 3 bits | 1 bit | 1 bit | 3 bits | | | ||||
| Figure 4: All fragment except the last one. Header size is 8 bits. | o *Retransmission and inactivity timers*: LoRaWAN end-devices do not | |||
| implement a "retransmission timer". At the end of a window or a | ||||
| fragmentation session, corresponding ACK(s) is (are) transmitted | ||||
| by the network gateway (LoRaWAN application server) in the RX1 or | ||||
| RX2 receive slot of end-device. If this ACK is not received the | ||||
| end-device sends an all-0 (or an all-1) fragment with no payload | ||||
| to request an SCHC ACK retransmission. The periodicity between | ||||
| retransmission of the all-0/all-1 fragments is device/application | ||||
| specific and may be different for each device (not specified). | ||||
| The SCHC gateway implements an "inactivity timer". The default | ||||
| recommended duration of this timer is 12 hours. This value is | ||||
| mainly driven by application requirements and may be changed by | ||||
| the application. | ||||
| | RuleID | DTag | W | FCN | MIC | Payload | | *The following fields are different:* | |||
| + ------ + ----- + ----- | ------ + ------- + ------- + | ||||
| | 3 bits | 1 bit | 1 bit | 3 bits | 32 bits | | | ||||
| Figure 5: All-1 fragment detailed format for the last fragment. | o RuleID size | |||
| Header size is 8 bits. | ||||
| The format of an all-0 or all-1 acknowledge is: | o Window index size W | |||
| | RuleID | DTag | W | Encoded bitmap | Padding (0s) | | 5.5.1.1. FPortUpShort - 1 byte header | |||
| + ------ + ----- + ----- | -------------- + ------------ + | ||||
| | 3 bits | 1 bit | 1 bit | 3 or 8 bits | 0 or 3 bits | | ||||
| Figure 6: ACK format for All-0 windows. Header size is 1 or 2 bytes. | In that case RuleID size is 0, the rule is the FPort=FPortUpShort and | |||
| only fragmented payload can be transported. | ||||
| o *RuleID*: size is 0 bit in SCHC header, not used. | ||||
| o *Window index*: encoded on W = 0 bit, not used | ||||
| With this set of parameters, the SCHC fragment header overhead is 1 | ||||
| byte (8 bits). MTU is: _127 tiles * 3 bytes per tile = 381 bytes_ | ||||
| *Regular fragments* | ||||
| | DTag | FCN | Payload | | ||||
| + ----- + ------ + ------- + | ||||
| | 1 bit | 7 bits | | | ||||
| Figure 5: All fragment except the last one. Header size is 8 bits (1 | ||||
| byte). | ||||
| *SCHC ACK* | ||||
| | RuleID | DTag | W | C | Encoded bitmap (if C = 0) | Padding (0s) | | | RuleID | DTag | W | C | Encoded bitmap (if C = 0) | Padding (0s) | | |||
| + ------ + ----- + ----- + ----- + ------------------------- + ------------ + | + ------ + ----- + ----- + ----- + ------------------------- + ------------ + | |||
| | 3 bits | 1 bit | 1 bit | 1 bit | 2 or 8 bits | 0 or 2 bits | | | 6 bits | 1 bit | 2 bit | 1 bit | 0 to 127 bits | 7 or 0 bits | | |||
| Figure 7: ACK format for All-1 windows. Header size is 1 or 2 bytes. | Figure 6: SCHC ACK format, failed mic check. | |||
| 5.4.2. Downlinks: From gateway to device | 5.5.1.2. FPortUpDefault - 2 bytes header | |||
| o *RuleID*: size is 6 bits (64 possible rules, 62 available for | ||||
| compression) | ||||
| o *Window index*: encoded on W = 2 bits. So 4 windows are | ||||
| available. | ||||
| With this set of parameters, the SCHC fragment header overhead is 2 | ||||
| bytes (16 bits). MTU is: _4 windows * 127 tiles * 3 bytes per tile = | ||||
| 1524 bytes_ | ||||
| _Note_: Even if it is less efficient, this rule can also be used for | ||||
| fragmented payload size less than 382 bytes. | ||||
| *Regular fragments* | ||||
| | RuleID | DTag | W | FCN | Payload | | ||||
| + ------ + ----- + ------ + ------ + ------- + | ||||
| | 6 bits | 1 bit | 2 bits | 7 bits | | | ||||
| Figure 7: All fragment except the last one. Header size is 16 bits | ||||
| (2 bytes). | ||||
| *Last fragment (All-1)* | ||||
| | RuleID | DTag | W | FCN=All-1 | MIC | Payload | | ||||
| + ------ + ----- + ------ + --------- + ------- + ----------------- + | ||||
| | 6 bits | 1 bit | 2 bits | 7 bits | 32 bits | Last tile, if any | | ||||
| Figure 8: All-1 fragment detailed format for the last fragment. | ||||
| *SCHC ACK* | ||||
| | RuleID | DTag | W | C | Encoded bitmap (if C = 0) | | ||||
| + ------ + ----- + ----- + ----- + ------------------------- + | ||||
| | 6 bits | 1 bit | 2 bit | 1 bit | 0 to 127 bits | | ||||
| Figure 9: SCHC formats, failed MIC check. | ||||
| *Receiver-Abort* | ||||
| | RuleID | DTag | W = b'11 | C = 1 | b'111111 | 0xFF (all 1's) | | ||||
| + ------ + ----- + -------- + ------+--------- + ---------------+ | ||||
| | 6 bits | 1 bit | 2 bits | 1 bit | 6 bits | 8 bits | | ||||
| Figure 10: Receiver-Abort format. | ||||
| *SCHC acknowledge request* | ||||
| | RuleID | DTag | W | FCN = b'0000000 | | ||||
| + ------ + ----- + ------ + --------------- + | ||||
| | 6 bits | 1 bit | 2 bits | 7 bits | | ||||
| Figure 11: SCHC ACK REQ format. | ||||
| 5.5.2. Downlink fragmentation: From SCHC gateway to device | ||||
| In that case the device is the fragmentation receiver, and the SCHC | In that case the device is the fragmentation receiver, and the SCHC | |||
| gateway the fragmentation transmitter. The following fields are | gateway the fragmentation transmitter. The following fields are | |||
| common to all devices. | common to all devices. | |||
| o SCHC fragmentation reliability mode : ACK_ALWAYS | o *SCHC fragmentation reliability mode*: ACK-Always. | |||
| o Window size : 1 , The FCN field is encoded on 1 bits | o *RuleID*: size is 6 bits (64 possible rules, 62 for compression). | |||
| o DTag : 1bit. This field is used to clearly separate two | o *Window index*: encoded on W=1 bit, as per | |||
| consecutive fragmentation sessions. A LoRaWAN device cannot | [I-D.ietf-lpwan-ipv6-static-context-hc]. | |||
| interleave several fragmented SCHC datagrams. | ||||
| o MIC calculation algorithm: CRC32 using 0xEDB88320 (i.e. the | o *DTag*: Not used, so its size is 0 bit. | |||
| o *FCN*: The FCN field is encoded on N=1 bits, so WINDOW_SIZE = 1 | ||||
| tile (FCN=All-1 is reserved for SCHC). | ||||
| o *MIC calculation algorithm*: CRC32 using 0xEDB88320 (i.e. the | ||||
| reverse representation of the polynomial used e.g. in the Ethernet | reverse representation of the polynomial used e.g. in the Ethernet | |||
| standard [RFC3385]) | standard [RFC3385]), as per | |||
| [I-D.ietf-lpwan-ipv6-static-context-hc]. | ||||
| o MAX_ACK_REQUESTS : 8 | o *MAX_ACK_REQUESTS*: 8 | |||
| | RuleID | DTag | W | FCN | Payload | | As only 1 tile is used, its size can change for each downlink, and | |||
| + ------ + ----- + ----- | ------ + ------- + ------- + | will be maximum available MTU minus header (1 byte) | |||
| | 3 bits | 1 bit | 1 bit | 1 bits | X bytes + 2 bits | | ||||
| Figure 8: All fragments but the last one. Header size is 6 bits. | _Note_: The Fpending bit included in LoRaWAN protocol SHOULD not be | |||
| used for SCHC-over-LoRaWAN protocol. It might be set by the Network | ||||
| Server for other purposes in but not SCHC needs. | ||||
| | RuleID | DTag | W | FCN | MIC | Payload | Padding (0s) | | *Regular fragments* | |||
| + ------ + ----- + ----- | ------ + ------- + ------- + ------------ + | | RuleID | W | FCN = b'0 | Payload | | |||
| | 3 bits | 1 bit | 1 bit | 1 bits | 32 bits | X bytes | 0 to 7 bits | | + ------ + ----- + --------- + ------- + | |||
| | 6 bits | 1 bit | 1 bits | X bytes | | ||||
| Figure 9: All-1 Fragment Detailed Format for the Last Fragment. | Figure 12: All fragments but the last one. Header size 1 byte (8 | |||
| Header size is 6 bits. | bits). | |||
| The format of an all-0 or all-1 acknowledge is: | *Last fragment (All-1)* | |||
| | RuleID | DTag | W | Encoded bitmap | Padding (0s) | | | RuleID | W | FCN = b'1 | MIC | Payload | | |||
| + ------ + ----- + ----- | -------------- + ------------ + | + ------ + ----- + --------- + ------- + ----------------- + | |||
| | 3 bits | 1 bit | 1 bit | 1 bit | 2 bits | | | 6 bits | 1 bit | 1 bit | 32 bits | Last tile, if any | | |||
| Figure 10: ACK format for All-0 windows. Header size is 8 bits. | Figure 13: All-1 SCHC ACK detailed format for the last fragment. | |||
| | RuleID | DTag | W | C = 1 | Padding (0s) | | *SCHC acknowledge* | |||
| + ------ + ----- + ----- + ----- + ------------ + | ||||
| | 3 bits | 1 bit | 1 bit | 1 bit | 2 bits | | ||||
| Figure 11: ACK format for All-1 windows, MIC is correct. Header size | | RuleID | W | C = b'1 | | |||
| is 8 bits. | + ------ + ----- + ------- + | |||
| | 6 bits | 1 bit | 1 bit | | ||||
| | RuleID | DTag | W | b'111 | 0xFF (all 1's) | | Figure 14: SCHC ACK format, MIC is correct. | |||
| + ------ + ----- + ----- + ------ + -------------- + | ||||
| | 3 bits | 1 bit | 1 bit | 3 bits | 8 bits | | ||||
| Figure 12: Receiver ABORT packet (following an all-1 packet with | *Receiver-Abort* | |||
| incorrect MIC). Header size is 16 bits. | ||||
| Class A and classB&C devices do not manage retransmissions and timers | | RuleID | W | C = b'0 | b'11111111 | | |||
| in the same way. | + ------ + ----- + ------- + ---------- + | |||
| | 6 bits | 1 bit | 1 bits | 8 bits | | ||||
| 5.4.2.1. Class A devices | Figure 15: Receiver-Abort packet (following an all-1 packet with | |||
| incorrect MIC). | ||||
| Class A devices can only receive in an RX slot following the | Class A and classB&C end-devices do not manage retransmissions and | |||
| timers in the same way. | ||||
| 5.5.2.1. ClassA end-devices | ||||
| Class A end-devices can only receive in an RX slot following the | ||||
| transmission of an uplink. Therefore there cannot be a concept of | transmission of an uplink. Therefore there cannot be a concept of | |||
| "retransmission timer" for a gateway talking to classA devices for | "retransmission timer" for an SCHC gateway. The SCHC gateway cannot | |||
| downlink fragmentation. | initiate communication to a classA end-device. | |||
| The device replies with an ACK fragment to every single fragment | The device replies with an ACK message to every single fragment | |||
| received from the gateway (because the window size is 1). Following | received from the SCHC gateway (because the window size is 1). | |||
| the reception of a FCN=0 fragment (fragment that is not the last | ||||
| fragment of the packet or ACK-request), the device MUST transmit the | ||||
| ACK fragment until it receives the fragment of the next window. The | ||||
| device shall transmit up to MAX_ACK_REQUESTS ACK fragments before | ||||
| aborting. The device should transmit those ACK as soon as possible | ||||
| while taking into consideration eventual local radio regulation on | ||||
| duty-cycle, to progress the fragmentation session as quickly as | ||||
| possible. The ACK bitmap is 1 bit long and is always 1. | ||||
| Following the reception of a FCN=1 fragment (the last fragment of a | Following the reception of a FCN=0 fragment (fragment that is not the | |||
| datagram) and if the MIC is correct, the device shall transmit the | last fragment of the packet or ACK-request, but the end of a window), | |||
| ACK with the "MIC is correct" indicator bit set. This message might | the device MUST transmit the SCHC ACK fragment until it receives the | |||
| be lost therefore the gateway may request a retransmission of this | fragment of the next window. The device shall transmit up to | |||
| ACK in the next downlink. The device SHALL keep this ACK message in | MAX_ACK_REQUESTS ACK messages before aborting. The device should | |||
| memory until it receives a downlink from the gateway different from | transmit those ACK as soon as possible while taking into | |||
| an ACK-request indicating that the gateway has received the ACK | consideration potential local radio regulation on duty-cycle, to | |||
| message. | progress the fragmentation session as quickly as possible. The ACK | |||
| bitmap is 1 bit long and is always 1. | ||||
| Following the reception of a FCN=1 fragment (the last fragment of a | Following the reception of a FCN=All-1 fragment (the last fragment of | |||
| datagram) and if the MIC is NOT correct, the device shall transmit a | a datagram) and if the MIC is correct, the device shall transmit the | |||
| receiver-ABORT fragment. The device SHALL keep this ABORT message in | ACK with the "MIC is correct" indicator bit set (C=1). This message | |||
| memory until it receives a downlink from the gateway different from | might be lost therefore the SCHC gateway may request a retransmission | |||
| an ACK-request indicating that the gateway has received the ABORT | of this ACK in the next downlink. The device SHALL keep this ACK | |||
| message in memory until it receives a downlink, on SCHC FPortDown | ||||
| from the SCHC gateway different from an ACK-request: it indicates | ||||
| that the SCHC gateway has received the ACK message. | ||||
| Following the reception of a FCN=All-1 fragment (the last fragment of | ||||
| a datagram), if all fragments have been received and the MIC is NOT | ||||
| correct, the device shall transmit a Receiver-Abort fragment. The | ||||
| device SHALL keep this Abort message in memory until it receives a | ||||
| downlink, on SCHC FPortDown, from the SCHC gateway different from an | ||||
| ACK-request indicating that the SCHC gateway has received the Abort | ||||
| message. The fragmentation receiver (device) does not implement | message. The fragmentation receiver (device) does not implement | |||
| retransmission timer and inactivity timer. | retransmission timer and inactivity timer. | |||
| The fragmentation sender (the gateway) implements an inactivity timer | The fragmentation sender (the SCHC gateway) implements an inactivity | |||
| with default duration 12 hours. Once a fragmentation session is | timer with default duration of 12 hours. Once a fragmentation | |||
| started, if the gateway has not received any ACK or receiver-ABORT | session is started, if the SCHC gateway has not received any ACK or | |||
| message 12 hours after the last message from the device was received, | Receiver-Abort message 12 hours after the last message from the | |||
| the gateway may flush the fragmentation context. For devices with | device was received, the SCHC gateway may flush the fragmentation | |||
| very low transmission rates (example 1 packet a day in normal | context. For devices with very low transmission rates (example 1 | |||
| operation) , that duration may be extended, but this is application | packet a day in normal operation) , that duration may be extended, | |||
| specific. | but this is application specific. | |||
| 5.4.2.2. Class B or C devices | 5.5.2.2. Class B or C end-devices | |||
| Class B&C devices can receive in scheduled RX slots or in RX slots | Class B&C end-devices can receive in scheduled RX slots or in RX | |||
| following the transmission of an uplink. The device replies with an | slots following the transmission of an uplink. The device replies | |||
| ACK fragment to every single fragment received from the gateway | with an ACK message to every single fragment received from the SCHC | |||
| (because the window size is 1). Following the reception of a FCN=0 | gateway (because the window size is 1). Following the reception of a | |||
| fragment (fragment that is not the last fragment of the packet or | FCN=0 fragment (fragment that is not the last fragment of the packet | |||
| ACK-request), the device MUST always transmit the corresponding ACK | or ACK-request), the device MUST always transmit the corresponding | |||
| fragment even if that fragment has already been received. The ACK | SCHC ACK message even if that fragment has already been received. | |||
| bitmap is 1 bit long and is always 1. If the gateway receives this | The ACK bitmap is 1 bit long and is always 1. If the SCHC gateway | |||
| ACK, it proceeds to send the next window fragment If the | receives this ACK, it proceeds to send the next window fragment. If | |||
| retransmission timer elapses and the gateway has not received the ACK | the retransmission timer elapses and the SCHC gateway has not | |||
| of the current window it retransmits the last fragment. The gateway | received the ACK of the current window it retransmits the last | |||
| tries retransmitting up to MAX_ACK_REQUESTS times before aborting. | fragment. The SCHC gateway tries retransmitting up to | |||
| MAX_ACK_REQUESTS times before aborting. | ||||
| Following the reception of a FCN=1 fragment (the last fragment of a | Following the reception of a FCN=All-1 fragment (the last fragment of | |||
| datagram) and if the MIC is correct, the device shall transmit the | a datagram) and if the MIC is correct, the device shall transmit the | |||
| ACK with the "MIC is correct" indicator bit set. If the gateway | ACK with the "MIC is correct" indicator bit set. If the SCHC gateway | |||
| receives this ACK, the current fragmentation session has succeeded | receives this ACK, the current fragmentation session has succeeded | |||
| and its context can be cleared. | and its context can be cleared. | |||
| If the retransmission timer elapses and the gateway has not received | If the retransmission timer elapses and the SCHC gateway has not | |||
| the all-1 ACK it retransmits the last fragment with the payload (not | received the SCHC ACK it retransmits the last fragment with the | |||
| an ACK-request without payload). The gateway tries retransmitting up | payload (not an ACK-request without payload). The SCHC gateway tries | |||
| to MAX_ACK_REQUESTS times before aborting. | retransmitting up to MAX_ACK_REQUESTS times before aborting. | |||
| The device SHALL keep the all-1 ACK message in memory until it | The device SHALL keep the SCHC ACK message in memory until it | |||
| receives a downlink from the gateway different from the last (FCN=1) | receives a downlink from the SCHC gateway different from the last | |||
| fragment indicating that the gateway has received the ACK message. | (FCN>0 and different DTag) fragment indicating that the SCHC gateway | |||
| Following the reception of a FCN=1 fragment (the last fragment of a | has received the ACK message. | |||
| datagram) and if the MIC is NOT correct, the device shall transmit a | ||||
| receiver-ABORT fragment. The retransmission timer is used by the | Following the reception of a FCN=All-1 fragment (the last fragment of | |||
| gateway (the sender), the optimal value is very much application | a datagram), if all fragments have been received and if the MIC is | |||
| specific but here are some recommended default values. For classB | NOT correct, the device shall transmit a Receiver-Abort fragment. | |||
| devices, this timer trigger is a function of the periodicity of the | The retransmission timer is used by the SCHC gateway (the sender), | |||
| classB ping slots. The recommended value is equal to 3 times the | the optimal value is very much application specific but here are some | |||
| classB ping slot periodicity. For classC devices which are nearly | recommended default values. For classB end-devices, this timer | |||
| constantly receiving, the recommended value is 30 seconds. This | trigger is a function of the periodicity of the classB ping slots. | |||
| means that the device shall try to transmit the ACK within 30 seconds | The recommended value is equal to 3 times the classB ping slot | |||
| of the reception of each fragment. The inactivity timer is | periodicity. For classC end-devices which are nearly constantly | |||
| implemented by the device to flush the context in-case it receives | receiving, the recommended value is 30 seconds. This means that the | |||
| nothing from the gateway over an extended period of time. The | end-device shall try to transmit the ACK within 30 seconds of the | |||
| recommended value is 12 hours for both classB&C devices. | reception of each fragment. The inactivity timer is implemented by | |||
| the end-device to flush the context in-case it receives nothing from | ||||
| the SCHC gateway over an extended period of time. The recommended | ||||
| value is 12 hours for both classB&C end-devices. | ||||
| 6. Security considerations | 6. Security considerations | |||
| As this document is only providing parameters that are expected to be | This document is only providing parameters that are expected to be | |||
| better suited for LoRaWAN networks for | better suited for LoRaWAN networks for | |||
| [I-D.ietf-lpwan-ipv6-static-context-hc]. As such, this parameters | [I-D.ietf-lpwan-ipv6-static-context-hc]. As such, this parameters | |||
| does not contribute to any new security issues in addition of those | does not contribute to any new security issues in addition of those | |||
| identified in [I-D.ietf-lpwan-ipv6-static-context-hc]. | identified in [I-D.ietf-lpwan-ipv6-static-context-hc]. | |||
| 7. Acknowledgements | Acknowledgements | |||
| TBD | Thanks to all those listed in the Contributors section for the | |||
| excellent text, insightful discussions, reviews and suggestions. | ||||
| 8. References | Contributors | |||
| 8.1. Normative References | Contributors ordered by family name. | |||
| o ins: V. Audebert name: Vincent AUDEBERT org: EDF R&D street: 7 bd | ||||
| Gaspard Monge city: 91120 PALAISEAU country: FRANCE email: | ||||
| vincent.audebert@edf.fr | ||||
| o ins: J. Catalano name: Julien Catalano org: Kerlink street: 1 rue | ||||
| Jacqueline Auriol city: 35235 Thorigne-Fouillard country: France | ||||
| email: j.catalano@kerlink.fr | ||||
| o ins: M. Coracin name: Michael Coracin org: Semtech street: 14 | ||||
| Chemin des Clos city: Meylan country: France email: | ||||
| mcoracin@semtech.com | ||||
| o ins: M. Le Gourrierec name: Marc Le Gourrierec org: SagemCom | ||||
| street: 250 Route de l'Empereur city: 92500 Rueil Malmaison | ||||
| country: FRANCE email: marc.legourrierec@sagemcom.com | ||||
| o ins: N. Sornin name: Nicolas Sornin org: Semtech street: 14 | ||||
| Chemin des Clos city: Meylan country: France email: | ||||
| nsornin@semtech.com | ||||
| o ins: A. Yegin name: Alper Yegin org: Actility street: . city: | ||||
| Paris, Paris country: France email: alper.yegin@actility.com | ||||
| 9. References | ||||
| 9.1. Normative References | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3385] Sheinwald, D., Satran, J., Thaler, P., and V. Cavanna, | [RFC3385] Sheinwald, D., Satran, J., Thaler, P., and V. Cavanna, | |||
| "Internet Protocol Small Computer System Interface (iSCSI) | "Internet Protocol Small Computer System Interface (iSCSI) | |||
| Cyclic Redundancy Check (CRC)/Checksum Considerations", | Cyclic Redundancy Check (CRC)/Checksum Considerations", | |||
| RFC 3385, DOI 10.17487/RFC3385, September 2002, | RFC 3385, DOI 10.17487/RFC3385, September 2002, | |||
| <https://www.rfc-editor.org/info/rfc3385>. | <https://www.rfc-editor.org/info/rfc3385>. | |||
| [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing | ||||
| Architecture", RFC 4291, DOI 10.17487/RFC4291, February | ||||
| 2006, <https://www.rfc-editor.org/info/rfc4291>. | ||||
| [RFC4944] Montenegro, G., Kushalnagar, N., Hui, J., and D. Culler, | [RFC4944] Montenegro, G., Kushalnagar, N., Hui, J., and D. Culler, | |||
| "Transmission of IPv6 Packets over IEEE 802.15.4 | "Transmission of IPv6 Packets over IEEE 802.15.4 | |||
| Networks", RFC 4944, DOI 10.17487/RFC4944, September 2007, | Networks", RFC 4944, DOI 10.17487/RFC4944, September 2007, | |||
| <https://www.rfc-editor.org/info/rfc4944>. | <https://www.rfc-editor.org/info/rfc4944>. | |||
| [RFC5795] Sandlund, K., Pelletier, G., and L-E. Jonsson, "The RObust | [RFC5795] Sandlund, K., Pelletier, G., and L-E. Jonsson, "The RObust | |||
| Header Compression (ROHC) Framework", RFC 5795, | Header Compression (ROHC) Framework", RFC 5795, | |||
| DOI 10.17487/RFC5795, March 2010, | DOI 10.17487/RFC5795, March 2010, | |||
| <https://www.rfc-editor.org/info/rfc5795>. | <https://www.rfc-editor.org/info/rfc5795>. | |||
| [RFC7136] Carpenter, B. and S. Jiang, "Significance of IPv6 | [RFC7136] Carpenter, B. and S. Jiang, "Significance of IPv6 | |||
| Interface Identifiers", RFC 7136, DOI 10.17487/RFC7136, | Interface Identifiers", RFC 7136, DOI 10.17487/RFC7136, | |||
| February 2014, <https://www.rfc-editor.org/info/rfc7136>. | February 2014, <https://www.rfc-editor.org/info/rfc7136>. | |||
| 8.2. Informative References | [RFC8376] Farrell, S., Ed., "Low-Power Wide Area Network (LPWAN) | |||
| Overview", RFC 8376, DOI 10.17487/RFC8376, May 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8376>. | ||||
| 9.2. Informative References | ||||
| [I-D.ietf-lpwan-ipv6-static-context-hc] | [I-D.ietf-lpwan-ipv6-static-context-hc] | |||
| Minaburo, A., Toutain, L., Gomez, C., Barthel, D., and J. | Minaburo, A., Toutain, L., Gomez, C., Barthel, D., and J. | |||
| Zuniga, "LPWAN Static Context Header Compression (SCHC) | Zuniga, "LPWAN Static Context Header Compression (SCHC) | |||
| and fragmentation for IPv6 and UDP", draft-ietf-lpwan- | and fragmentation for IPv6 and UDP", draft-ietf-lpwan- | |||
| ipv6-static-context-hc-18 (work in progress), December | ipv6-static-context-hc-18 (work in progress), December | |||
| 2018. | 2018. | |||
| [I-D.ietf-lpwan-overview] | ||||
| Farrell, S., "LPWAN Overview", draft-ietf-lpwan- | ||||
| overview-10 (work in progress), February 2018. | ||||
| [lora-alliance-spec] | [lora-alliance-spec] | |||
| Alliance, L., "LoRaWAN Specification Version V1.0.2", | Alliance, L., "LoRaWAN Specification Version V1.0.3", | |||
| <http://portal.lora- | <https://lora-alliance.org/sites/default/files/2018-07/ | |||
| alliance.org/DesktopModules/Inventures_Document/ | lorawan1.0.3.pdf>. | |||
| FileDownload.aspx?ContentID=1398>. | ||||
| Appendix A. Examples | Appendix A. Examples | |||
| Appendix B. Note | A.1. Uplink - Compression example - No fragmentation | |||
| Authors' Addresses | Figure 16 is representing an applicative payload going through SCHC, | |||
| no fragmentation required | ||||
| Nicolas Sornin (editor) | An applicative payload of 78 bytes is passed to SCHC compression layer using | |||
| Semtech | rule 1, allowing to compress it to 40 bytes: 2 bytes residue + 38 bytes | |||
| 14 Chemin des Clos | payload. | |||
| Meylan | ||||
| France | ||||
| Email: nsornin@semtech.com | | RuleID | Compression residue | Payload | | |||
| + ------ + ------------------- + --------- + | ||||
| | 1 | 18 bits | 38 bytes | | ||||
| Michael Coracin | The current LoRaWAN MTU is 51 bytes, although 2 bytes FOpts are used by | |||
| LoRaWAN protocol: 49 bytes are available for SCHC payload; no need for | ||||
| fragmentation. The payload will be transmitted through FPortUpDefault | ||||
| | LoRaWAN Header | RuleID | Compression residue | Payload | | ||||
| + -------------- + ------ + ------------------- + --------- + | ||||
| | XXXX | 1 | 18 bits | 38 bytes | | ||||
| Figure 16: Uplink example: compression without fragmentation | ||||
| A.2. Uplink - Compression and fragmentation example | ||||
| Figure 17 is representing an applicative payload going through SCHC, | ||||
| with fragmentation. | ||||
| An applicative payload of 478 bytes is passed to SCHC compression layer using | ||||
| rule 1, allowing to compress it to 440 bytes: 18 bits residue + 138 bytes | ||||
| payload. | ||||
| | RuleID | Compression residue | Payload | | ||||
| + ------ + ------------------- + --------- + | ||||
| | 1 | 18 bits | 138 bytes | | ||||
| Given the size of the payload, FPortUpDefault will be used. | ||||
| The current LoRaWAN MTU is 11 bytes, although 2 bytes FOpts are used by | ||||
| LoRaWAN protocol: 9 bytes are available for SCHC payload. | ||||
| SCHC header is 2 bytes so 2 tiles are send in first fragment. | ||||
| | LoRaWAN Header | FOpts | RuleID | DTag | W | FCN | 2 tiles | | ||||
| + -------------- + ------- + ------ + ----- + ------ + ------ + ------- + | ||||
| | XXXX | 2 bytes | 0 | 0 | 0 | 126 | 6 bytes | | ||||
| Content of the two tiles is: | ||||
| | RuleID | Compression residue | Payload | | ||||
| + ------ + ------------------- + --------- + | ||||
| | 1 | 18 bits | 3 bytes | | ||||
| Next transmission MTU is 242 bytes, no FOpts. 80 tiles are transmitted: | ||||
| | LoRaWAN Header | RuleID | DTag | W | FCN | 80 tiles | | ||||
| + -------------- + ------ + ----- + ------ + ------ + --------- + | ||||
| | XXXX | 0 | 0 | 0 | 124 | 240 bytes | | ||||
| Next transmission MTU is 242 bytes, no FOpts. All 65 remaining tiles are | ||||
| transmitted, last tile is only 2 bytes. | ||||
| | LoRaWAN Header | RuleID | DTag | W | FCN | MIC | 65 tiles | | ||||
| + -------------- + ------ + ----- + ------ + ------ + ----- + --------- + | ||||
| | XXXX | 0 | 0 | 0 | 127 | CRC32 | 194 bytes | | ||||
| All packets have been received by the SCHC gateway, computed MIC is correct so | ||||
| the following ACK is send to the device: | ||||
| | LoRaWAN Header | RuleID | DTag | W | C | | ||||
| + -------------- + ------ + ----- + ------ + --- + | ||||
| | XXXX | 0 | 0 | 0 | 1 | | ||||
| Figure 17: Uplink example: compression and fragmentation | ||||
| A.3. Downlink | ||||
| TODO | ||||
| Appendix B. Note | ||||
| Authors' Addresses | ||||
| Olivier Gimenez (editor) | ||||
| Semtech | Semtech | |||
| 14 Chemin des Clos | 14 Chemin des Clos | |||
| Meylan | Meylan | |||
| France | France | |||
| Email: mcoracin@semtech.com | Email: ogimenez@semtech.com | |||
| Ivaylo Petrov (editor) | ||||
| Ivaylo Petrov | ||||
| Acklio | Acklio | |||
| 2bis rue de la Chataigneraie | 2bis rue de la Chataigneraie | |||
| 35510 Cesson-Sevigne Cedex | 35510 Cesson-Sevigne Cedex | |||
| France | France | |||
| Email: ivaylo@ackl.io | Email: ivaylo@ackl.io | |||
| Alper Yegin | ||||
| Actility | ||||
| . | ||||
| Paris, Paris | ||||
| France | ||||
| Email: alper.yegin@actility.com | ||||
| Julien Catalano | ||||
| Kerlink | ||||
| 1 rue Jacqueline Auriol | ||||
| 35235 Thorigne-Fouillard | ||||
| France | ||||
| Email: j.catalano@kerlink.fr | ||||
| Vincent AUDEBERT | ||||
| EDF R&D | ||||
| 7 bd Gaspard Monge | ||||
| 91120 PALAISEAU | ||||
| FRANCE | ||||
| Email: vincent.audebert@edf.fr | ||||
| End of changes. 111 change blocks. | ||||
| 344 lines changed or deleted | 608 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/ | ||||