| < draft-ietf-lpwan-ipv6-static-context-hc-14.txt | draft-ietf-lpwan-ipv6-static-context-hc-15.txt > | |||
|---|---|---|---|---|
| lpwan Working Group A. Minaburo | lpwan Working Group A. Minaburo | |||
| Internet-Draft Acklio | Internet-Draft Acklio | |||
| Intended status: Informational 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-14 | draft-ietf-lpwan-ipv6-static-context-hc-15 | |||
| 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 2, line 31 ¶ | skipping to change at page 2, line 31 ¶ | |||
| (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 | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2. LPWAN Architecture . . . . . . . . . . . . . . . . . . . . . 5 | 2. Requirements Notation . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. LPWAN Architecture . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4. SCHC overview . . . . . . . . . . . . . . . . . . . . . . . . 9 | 4. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5. Rule ID . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 5. SCHC overview . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 6. Static Context Header Compression . . . . . . . . . . . . . . 12 | 6. Rule ID . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 6.1. SCHC C/D Rules . . . . . . . . . . . . . . . . . . . . . 13 | 7. Static Context Header Compression . . . . . . . . . . . . . . 13 | |||
| 6.2. Rule ID for SCHC C/D . . . . . . . . . . . . . . . . . . 15 | 7.1. SCHC C/D Rules . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 6.3. Packet processing . . . . . . . . . . . . . . . . . . . . 15 | 7.2. Rule ID for SCHC C/D . . . . . . . . . . . . . . . . . . 16 | |||
| 6.4. Matching operators . . . . . . . . . . . . . . . . . . . 17 | 7.3. Packet processing . . . . . . . . . . . . . . . . . . . . 16 | |||
| 6.5. Compression Decompression Actions (CDA) . . . . . . . . . 17 | 7.4. Matching operators . . . . . . . . . . . . . . . . . . . 18 | |||
| 6.5.1. not-sent CDA . . . . . . . . . . . . . . . . . . . . 19 | 7.5. Compression Decompression Actions (CDA) . . . . . . . . . 18 | |||
| 6.5.2. value-sent CDA . . . . . . . . . . . . . . . . . . . 19 | 7.5.1. not-sent CDA . . . . . . . . . . . . . . . . . . . . 20 | |||
| 6.5.3. mapping-sent CDA . . . . . . . . . . . . . . . . . . 19 | 7.5.2. value-sent CDA . . . . . . . . . . . . . . . . . . . 20 | |||
| 6.5.4. LSB CDA . . . . . . . . . . . . . . . . . . . . . . . 19 | 7.5.3. mapping-sent CDA . . . . . . . . . . . . . . . . . . 20 | |||
| 6.5.5. DevIID, AppIID CDA . . . . . . . . . . . . . . . . . 20 | 7.5.4. LSB CDA . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 6.5.6. Compute-* . . . . . . . . . . . . . . . . . . . . . . 20 | 7.5.5. DevIID, AppIID CDA . . . . . . . . . . . . . . . . . 21 | |||
| 7. Fragmentation . . . . . . . . . . . . . . . . . . . . . . . . 20 | 7.5.6. Compute-* . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 7.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 20 | 8. Fragmentation . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 7.2. Fragmentation Tools . . . . . . . . . . . . . . . . . . . 21 | 8.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 7.3. Reliability modes . . . . . . . . . . . . . . . . . . . . 24 | 8.2. Fragmentation Tools . . . . . . . . . . . . . . . . . . . 22 | |||
| 7.4. Fragmentation Formats . . . . . . . . . . . . . . . . . . 26 | 8.3. Reliability modes . . . . . . . . . . . . . . . . . . . . 25 | |||
| 7.4.1. Fragments that are not the last one . . . . . . . . . 26 | 8.4. Fragmentation Formats . . . . . . . . . . . . . . . . . . 27 | |||
| 7.4.2. All-1 fragment . . . . . . . . . . . . . . . . . . . 28 | 8.4.1. Fragments that are not the last one . . . . . . . . . 27 | |||
| 7.4.3. SCHC ACK format . . . . . . . . . . . . . . . . . . . 30 | 8.4.2. All-1 fragment . . . . . . . . . . . . . . . . . . . 29 | |||
| 7.4.4. Abort formats . . . . . . . . . . . . . . . . . . . . 32 | 8.4.3. SCHC ACK format . . . . . . . . . . . . . . . . . . . 31 | |||
| 7.5. Baseline mechanism . . . . . . . . . . . . . . . . . . . 34 | 8.4.4. Abort formats . . . . . . . . . . . . . . . . . . . . 33 | |||
| 7.5.1. No-ACK . . . . . . . . . . . . . . . . . . . . . . . 35 | 8.5. Baseline mechanism . . . . . . . . . . . . . . . . . . . 35 | |||
| 7.5.2. ACK-Always . . . . . . . . . . . . . . . . . . . . . 35 | 8.5.1. No-ACK . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
| 7.5.3. ACK-on-Error . . . . . . . . . . . . . . . . . . . . 38 | 8.5.2. ACK-Always . . . . . . . . . . . . . . . . . . . . . 36 | |||
| 7.6. Supporting multiple window sizes . . . . . . . . . . . . 40 | 8.5.3. ACK-on-Error . . . . . . . . . . . . . . . . . . . . 39 | |||
| 7.7. Downlink SCHC Fragment transmission . . . . . . . . . . . 40 | 8.6. Supporting multiple window sizes . . . . . . . . . . . . 41 | |||
| 8. Padding management . . . . . . . . . . . . . . . . . . . . . 41 | 8.7. Downlink SCHC Fragment transmission . . . . . . . . . . . 41 | |||
| 9. SCHC Compression for IPv6 and UDP headers . . . . . . . . . . 42 | 9. Padding management . . . . . . . . . . . . . . . . . . . . . 42 | |||
| 9.1. IPv6 version field . . . . . . . . . . . . . . . . . . . 42 | 10. SCHC Compression for IPv6 and UDP headers . . . . . . . . . . 43 | |||
| 9.2. IPv6 Traffic class field . . . . . . . . . . . . . . . . 42 | 10.1. IPv6 version field . . . . . . . . . . . . . . . . . . . 43 | |||
| 9.3. Flow label field . . . . . . . . . . . . . . . . . . . . 43 | 10.2. IPv6 Traffic class field . . . . . . . . . . . . . . . . 43 | |||
| 9.4. Payload Length field . . . . . . . . . . . . . . . . . . 43 | 10.3. Flow label field . . . . . . . . . . . . . . . . . . . . 44 | |||
| 9.5. Next Header field . . . . . . . . . . . . . . . . . . . . 43 | 10.4. Payload Length field . . . . . . . . . . . . . . . . . . 44 | |||
| 9.6. Hop Limit field . . . . . . . . . . . . . . . . . . . . . 44 | 10.5. Next Header field . . . . . . . . . . . . . . . . . . . 44 | |||
| 9.7. IPv6 addresses fields . . . . . . . . . . . . . . . . . . 44 | 10.6. Hop Limit field . . . . . . . . . . . . . . . . . . . . 45 | |||
| 9.7.1. IPv6 source and destination prefixes . . . . . . . . 44 | 10.7. IPv6 addresses fields . . . . . . . . . . . . . . . . . 45 | |||
| 9.7.2. IPv6 source and destination IID . . . . . . . . . . . 45 | 10.7.1. IPv6 source and destination prefixes . . . . . . . . 45 | |||
| 9.8. IPv6 extensions . . . . . . . . . . . . . . . . . . . . . 45 | 10.7.2. IPv6 source and destination IID . . . . . . . . . . 46 | |||
| 9.9. UDP source and destination port . . . . . . . . . . . . . 45 | 10.8. IPv6 extensions . . . . . . . . . . . . . . . . . . . . 46 | |||
| 9.10. UDP length field . . . . . . . . . . . . . . . . . . . . 46 | 10.9. UDP source and destination port . . . . . . . . . . . . 46 | |||
| 9.11. UDP Checksum field . . . . . . . . . . . . . . . . . . . 46 | 10.10. UDP length field . . . . . . . . . . . . . . . . . . . . 47 | |||
| 10. Security considerations . . . . . . . . . . . . . . . . . . . 47 | 10.11. UDP Checksum field . . . . . . . . . . . . . . . . . . . 47 | |||
| 10.1. Security considerations for SCHC | 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 | |||
| Compression/Decompression . . . . . . . . . . . . . . . 47 | 12. Security considerations . . . . . . . . . . . . . . . . . . . 48 | |||
| 10.2. Security considerations for SCHC | 12.1. Security considerations for SCHC | |||
| Fragmentation/Reassembly . . . . . . . . . . . . . . . . 47 | Compression/Decompression . . . . . . . . . . . . . . . 48 | |||
| 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 48 | 12.2. Security considerations for SCHC | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 49 | Fragmentation/Reassembly . . . . . . . . . . . . . . . . 48 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 49 | 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 49 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 50 | 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 50 | |||
| Appendix A. SCHC Compression Examples . . . . . . . . . . . . . 50 | 14.1. Normative References . . . . . . . . . . . . . . . . . . 50 | |||
| Appendix B. Fragmentation Examples . . . . . . . . . . . . . . . 52 | 14.2. Informative References . . . . . . . . . . . . . . . . . 50 | |||
| Appendix C. Fragmentation State Machines . . . . . . . . . . . . 58 | Appendix A. SCHC Compression Examples . . . . . . . . . . . . . 51 | |||
| Appendix D. SCHC Parameters - Ticket #15 . . . . . . . . . . . . 65 | Appendix B. Fragmentation Examples . . . . . . . . . . . . . . . 54 | |||
| Appendix E. Note . . . . . . . . . . . . . . . . . . . . . . . . 66 | Appendix C. Fragmentation State Machines . . . . . . . . . . . . 60 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 67 | Appendix D. SCHC Parameters - Ticket #15 . . . . . . . . . . . . 67 | |||
| Appendix E. Note . . . . . . . . . . . . . . . . . . . . . . . . 68 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 69 | ||||
| 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 tailored for Low Power Wide Area | functionalities. SCHC has been tailored for Low Power Wide Area | |||
| Networks (LPWAN). | Networks (LPWAN). | |||
| Header compression is needed to efficiently bring Internet | Header compression is needed to efficiently bring Internet | |||
| connectivity to the node within an LPWAN network. Some LPWAN | connectivity to the node within an LPWAN network. Some LPWAN | |||
| skipping to change at page 4, line 38 ¶ | skipping to change at page 4, line 45 ¶ | |||
| mechanism is independent of the specific LPWAN technology over which | mechanism is independent of the specific LPWAN technology over which | |||
| it is used. | it is used. | |||
| LPWAN technologies impose some strict limitations on traffic. For | LPWAN technologies impose some strict limitations on traffic. For | |||
| instance, devices are sleeping most of the time and MAY receive data | instance, devices are sleeping most of the time and MAY receive data | |||
| during short periods of time after transmission to preserve battery. | during short periods of time after transmission to preserve battery. | |||
| LPWAN technologies are also characterized, among others, by a very | LPWAN technologies are also characterized, among others, by a very | |||
| reduced data unit and/or payload size (see [RFC8376]). However, some | reduced data unit and/or payload size (see [RFC8376]). However, some | |||
| of these technologies do not provide fragmentation functionality, | of these technologies do not provide fragmentation functionality, | |||
| therefore the only option for them to support the IPv6 MTU | therefore the only option for them to support the IPv6 MTU | |||
| requirement of 1280 bytes [RFC2460] is to use a fragmentation | requirement of 1280 bytes [RFC8200] is to use a fragmentation | |||
| protocol at the adaptation layer, below IPv6. In response to this | protocol at the adaptation layer, below IPv6. In response to this | |||
| need, this document also defines a fragmentation/reassembly | need, this document also defines a fragmentation/reassembly | |||
| mechanism, which supports the IPv6 MTU requirement over LPWAN | mechanism, which supports the IPv6 MTU requirement over LPWAN | |||
| technologies. Such functionality has been designed under the | technologies. Such functionality has been designed under the | |||
| assumption that there is no out-of-sequence delivery of data units | assumption that there is no out-of-sequence delivery of data units | |||
| between the entity performing fragmentation and the entity performing | between the entity performing fragmentation and the entity performing | |||
| 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. LPWAN Architecture | 2. Requirements Notation | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
| "OPTIONAL" in this document are to be interpreted as described in BCP | ||||
| 14 [RFC2119][RFC8174] when, and only when, they appear in all | ||||
| capitals, as shown here. | ||||
| 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, | |||
| 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. | radio gateway. | |||
| skipping to change at page 5, line 38 ¶ | skipping to change at page 6, line 5 ¶ | |||
| () () () | |LPWAN-| | () () () | |LPWAN-| | |||
| () () () () / \ +---------+ | AAA | | () () () () / \ +---------+ | AAA | | |||
| () () () () () () / \======| ^ |===|Server| +-----------+ | () () () () () () / \======| ^ |===|Server| +-----------+ | |||
| () () () | | <--|--> | +------+ |APPLICATION| | () () () | | <--|--> | +------+ |APPLICATION| | |||
| () () () () / \==========| v |=============| (App) | | () () () () / \==========| v |=============| (App) | | |||
| () () () / \ +---------+ +-----------+ | () () () / \ +---------+ +-----------+ | |||
| Dev Radio Gateways NGW | Dev Radio Gateways NGW | |||
| Figure 1: LPWAN Architecture | Figure 1: LPWAN Architecture | |||
| 3. Terminology | 4. Terminology | |||
| This section defines the terminology and acronyms used in this | This section defines the terminology and acronyms used in this | |||
| document. | document. | |||
| Note that the SCHC acronym is pronounced like "sheek" in English (or | Note that the SCHC acronym is pronounced like "sheek" in English (or | |||
| "chic" in French). Therefore, this document writes "a SCHC Packet" | "chic" in French). Therefore, this document writes "a SCHC Packet" | |||
| instead of "an SCHC Packet". | instead of "an SCHC Packet". | |||
| o Abort. A SCHC Fragment format to signal the other end-point that | o Abort. A SCHC Fragment format to signal the other end-point that | |||
| the on-going fragment transmission is stopped and finished. | the on-going fragment transmission is stopped and finished. | |||
| skipping to change at page 8, line 15 ¶ | skipping to change at page 8, line 28 ¶ | |||
| o MIC: Message Integrity Check. A SCHC F/R header field computed | o MIC: Message Integrity Check. A SCHC F/R header field computed | |||
| over the fragmented SCHC Packet and potential fragment padding, | over the fragmented SCHC Packet and potential fragment padding, | |||
| used for error detection after SCHC Packet reassembly. | used for error detection after SCHC Packet reassembly. | |||
| o MO: Matching Operator. An operator used to match a value | o MO: Matching Operator. An operator used to match a value | |||
| contained in a header field with a value contained in a Rule. | contained in a header field with a value contained in a Rule. | |||
| o Padding (P). Extra bits that may be appended by SCHC to a data | o Padding (P). Extra bits that may be appended by SCHC to a data | |||
| unit that it passes to the underlying Layer 2 for transmission. | unit that it passes to the underlying Layer 2 for transmission. | |||
| SCHC itself operates on bits, not bytes, and does not have any | SCHC itself operates on bits, not bytes, and does not have any | |||
| alignment prerequisite. See Section 8. | alignment prerequisite. See Section 9. | |||
| o Retransmission Timer. A timer used by the SCHC Fragment sender | o Retransmission Timer. A timer used by the SCHC Fragment sender | |||
| during an on-going fragmented SCHC Packet transmission to detect | during an on-going fragmented SCHC Packet transmission to detect | |||
| possible link errors when waiting for a possible incoming SCHC | possible link errors when waiting for a possible incoming SCHC | |||
| ACK. | ACK. | |||
| o Rule: A set of header field values. | o Rule: A set of header field values. | |||
| o Rule entry: A column in a Rule that describes a parameter of the | o Rule entry: A column in a Rule that describes a parameter of the | |||
| header field. | header field. | |||
| o Rule ID: An identifier for a Rule. SCHC C/D on both sides share | o Rule ID: An identifier for a Rule. SCHC C/D on both sides share | |||
| the same Rule ID for a given packet. A set of Rule IDs are used | the same Rule ID for a given packet. A set of Rule IDs are used | |||
| to support SCHC F/R functionality. | to support SCHC F/R functionality. | |||
| o SCHC ACK: A SCHC acknowledgement for fragmentation. This message | o SCHC ACK: A SCHC acknowledgement for fragmentation. This message | |||
| is used to report on the success of reception of a set of SCHC | is used to report on the success of reception of a set of SCHC | |||
| Fragments. See Section 7 for more details. | Fragments. See Section 8 for more details. | |||
| o SCHC C/D: Static Context Header Compression Compressor/ | o SCHC C/D: Static Context Header Compression Compressor/ | |||
| Decompressor. A mechanism used on both sides, at the Dev and at | Decompressor. A mechanism used on both sides, at the Dev and at | |||
| the network, to achieve Compression/Decompression of headers. | the network, to achieve Compression/Decompression of headers. | |||
| SCHC C/D uses Rules to perform compression and decompression. | SCHC C/D uses Rules to perform compression and decompression. | |||
| o SCHC F/R: Static Context Header Compression Fragmentation/ | o SCHC F/R: Static Context Header Compression Fragmentation/ | |||
| Reassembly. A protocol used on both sides, at the Dev and at the | Reassembly. A protocol used on both sides, at the Dev and at the | |||
| network, to achieve Fragmentation/Reassembly of SCHC Packets. | network, to achieve Fragmentation/Reassembly of SCHC Packets. | |||
| SCHC F/R has three reliability modes. | SCHC F/R has three reliability modes. | |||
| o SCHC Fragment: A data unit that carries a subset of a SCHC Packet. | o SCHC Fragment: A data unit that carries a subset of a SCHC Packet. | |||
| SCHC F/R is needed when the size of a SCHC packet exceeds the | SCHC F/R is needed when the size of a SCHC packet exceeds the | |||
| available payload size of the underlying L2 technology data unit. | available payload size of the underlying L2 technology data unit. | |||
| See Section 7. | See Section 8. | |||
| o SCHC Packet: A packet (e.g. an IPv6 packet) whose header has been | o SCHC Packet: A packet (e.g. an IPv6 packet) whose header has been | |||
| compressed as per the header compression mechanism defined in this | compressed as per the header compression mechanism defined in this | |||
| document. If the header compression process is unable to actually | document. If the header compression process is unable to actually | |||
| compress the packet header, the packet with the uncompressed | compress the packet header, the packet with the uncompressed | |||
| header is still called a SCHC Packet (in this case, a Rule ID is | header is still called a SCHC Packet (in this case, a Rule ID is | |||
| used to indicate that the packet header has not been compressed). | used to indicate that the packet header has not been compressed). | |||
| See Section 6 for more details. | See Section 7 for more details. | |||
| o TV: Target value. A value contained in a Rule that will be | o TV: Target value. A value contained in a Rule that will be | |||
| matched with the value of a header field. | matched with the value of a header field. | |||
| o Up: Uplink direction for compression/decompression in both sides, | o Up: Uplink direction for compression/decompression in both sides, | |||
| from the Dev SCHC C/D to the network SCHC C/D. | from the Dev SCHC C/D to the network SCHC C/D. | |||
| o W: Window bit. A SCHC Fragment header field used in ACK-on-Error | o W: Window bit. A SCHC Fragment header field used in ACK-on-Error | |||
| or ACK-Always mode Section 7, which carries the same value for all | or ACK-Always mode Section 8, which carries the same value for all | |||
| SCHC Fragments of a window. | SCHC Fragments of a window. | |||
| o Window: A subset of the SCHC Fragments needed to carry a SCHC | o Window: A subset of the SCHC Fragments needed to carry a SCHC | |||
| Packet (see Section 7). | Packet (see Section 8). | |||
| 4. SCHC overview | 5. SCHC overview | |||
| SCHC can be abstracted as an adaptation layer between IPv6 and the | SCHC can be abstracted as an adaptation layer between IPv6 and the | |||
| underlying LPWAN technology. SCHC comprises two sublayers (i.e. the | underlying LPWAN technology. SCHC comprises two sublayers (i.e. the | |||
| Compression sublayer and the Fragmentation sublayer), as shown in | Compression sublayer and the Fragmentation sublayer), as shown in | |||
| Figure 2. | Figure 2. | |||
| +----------------+ | +----------------+ | |||
| | IPv6 | | | IPv6 | | |||
| +- +----------------+ | +- +----------------+ | |||
| | | Compression | | | | Compression | | |||
| skipping to change at page 10, line 35 ¶ | skipping to change at page 11, line 35 ¶ | |||
| 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 technology | |||
| over which SCHC is applied. See LPWAN technology-specific documents. | 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 6. 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. | |||
| | Rule ID + Compression Residue | | | Rule ID + Compression Residue | | |||
| +---------------------------------+--------------------+ | +---------------------------------+--------------------+ | |||
| | Compressed Header | Payload | | | Compressed Header | Payload | | |||
| +---------------------------------+--------------------+ | +---------------------------------+--------------------+ | |||
| Figure 4: SCHC Packet | Figure 4: SCHC Packet | |||
| The Fragment Header size is variable and depends on the Fragmentation | The Fragment Header size is variable and depends on the Fragmentation | |||
| parameters. The Fragment payload contains a part of the SCHC Packet | parameters. The Fragment payload contains a part of the SCHC Packet | |||
| Compressed Header, a part of the SCHC Packet Payload or both. Its | Compressed Header, a part of the SCHC Packet Payload or both. Its | |||
| size depends on the L2 data unit, see Section 7. The SCHC Fragment | size depends on the L2 data unit, see Section 8. The SCHC Fragment | |||
| has the following format: | has the following format: | |||
| | Rule ID + DTAG + W + FCN [+ MIC ] | Partial SCHC Packet | | | Rule ID + DTAG + W + FCN [+ MIC ] | Partial SCHC Packet | | |||
| +-----------------------------------+-------------------------+ | +-----------------------------------+-------------------------+ | |||
| | Fragment Header | Fragment Payload | | | Fragment Header | Fragment Payload | | |||
| +-----------------------------------+-------------------------+ | +-----------------------------------+-------------------------+ | |||
| Figure 5: SCHC Fragment | Figure 5: SCHC Fragment | |||
| The SCHC ACK is only used for Fragmentation. It has the following | The SCHC ACK is only used for Fragmentation. It has the following | |||
| skipping to change at page 12, line 7 ¶ | skipping to change at page 13, line 7 ¶ | |||
| Figure 7: Architecture | Figure 7: Architecture | |||
| SCHC C/D and SCHC F/R are located on both sides of the LPWAN | SCHC C/D and SCHC F/R are located on both sides of the LPWAN | |||
| transmission, i.e. on the Dev side and on the Network side. | transmission, i.e. on the Dev side and on the Network side. | |||
| Let's describe the operation in the Uplink direction. The Device | Let's describe the operation in the Uplink direction. The Device | |||
| application packets use IPv6 or IPv6/UDP protocols. Before sending | application packets use IPv6 or IPv6/UDP protocols. Before sending | |||
| these packets, the Dev compresses their headers using SCHC C/D and, | these packets, the Dev compresses their headers using SCHC C/D and, | |||
| if the SCHC Packet resulting from the compression exceeds the maximum | if the SCHC Packet resulting from the compression exceeds the maximum | |||
| payload size of the underlying LPWAN technology, SCHC F/R is | payload size of the underlying LPWAN technology, SCHC F/R is | |||
| performed (see Section 7). The resulting SCHC Fragments are sent as | performed (see Section 8). The resulting SCHC Fragments are sent as | |||
| one or more L2 frames to an LPWAN Radio Gateway (RG) which forwards | one or more L2 frames to an LPWAN Radio Gateway (RG) which forwards | |||
| them to a Network Gateway (NGW). The NGW sends the data to a SCHC F/ | them to a Network Gateway (NGW). The NGW sends the data to a SCHC F/ | |||
| R and then to the SCHC C/D for decompression. The SCHC F/R and C/D | R and then to the SCHC C/D for decompression. The SCHC F/R and C/D | |||
| on the Network side can be located in the NGW or somewhere else as | on the Network side can be located in the NGW or somewhere else as | |||
| long as a tunnel is established between them and the NGW. Note that, | long as a tunnel is established between them and the NGW. Note that, | |||
| for some LPWAN technologies, it MAY be suitable to locate the SCHC F/ | for some LPWAN technologies, it MAY be suitable to locate the SCHC F/ | |||
| R functionality nearer the NGW, in order to better deal with time | R functionality nearer the NGW, in order to better deal with time | |||
| constraints of such technologies. The SCHC C/D and F/R on both sides | constraints of such technologies. The SCHC C/D and F/R on both sides | |||
| MUST share the same set of Rules. After decompression, the packet | MUST share the same set of Rules. After decompression, the packet | |||
| can be sent over the Internet to one or several LPWAN Application | can be sent over the Internet to one or several LPWAN Application | |||
| Servers (App). | Servers (App). | |||
| The SCHC C/D and F/R process is symmetrical, therefore the | The SCHC C/D and F/R process is symmetrical, therefore the | |||
| description of the Downlink direction trivially derives from the one | description of the Downlink direction trivially derives from the one | |||
| above. | above. | |||
| 5. Rule ID | 6. Rule ID | |||
| Rule IDs are identifiers used to select the correct context either | Rule IDs are identifiers used to select the correct context either | |||
| for Compression/Decompression or for Fragmentation/Reassembly. | for Compression/Decompression or for Fragmentation/Reassembly. | |||
| The size of the Rule IDs is not specified in this document, as it is | The size of the Rule IDs is not specified in this document, as it is | |||
| implementation-specific and can vary according to the LPWAN | implementation-specific and can vary according to the LPWAN | |||
| technology and the number of Rules, among others. | technology and the number of Rules, among others. | |||
| The Rule IDs are used: | The Rule IDs are used: | |||
| skipping to change at page 12, line 47 ¶ | skipping to change at page 13, line 47 ¶ | |||
| o At least one Rule ID MAY be allocated to tagging packets for which | o At least one Rule ID MAY be allocated to tagging packets for which | |||
| SCHC compression was not possible (no matching Rule was found). | SCHC compression was not possible (no matching Rule was found). | |||
| o In SCHC F/R, to identify the specific modes and settings of SCHC | o In SCHC F/R, to identify the specific modes and settings of SCHC | |||
| Fragments being transmitted, and to identify the SCK ACKs, | Fragments being transmitted, and to identify the SCK ACKs, | |||
| including their modes and settings. Note that in the case of | including their modes and settings. Note that in the case of | |||
| bidirectional communication, at least two Rule ID values are | bidirectional communication, at least two Rule ID values are | |||
| therefore needed for F/R. | therefore needed for F/R. | |||
| 6. Static Context Header Compression | 7. Static Context Header Compression | |||
| In order to perform header compression, this document defines a | In order to perform header compression, this document defines a | |||
| mechanism called Static Context Header Compression (SCHC), which is | mechanism called Static Context Header Compression (SCHC), which is | |||
| based on using context, i.e. a set of Rules to compress or decompress | based on using context, i.e. a set of Rules to compress or decompress | |||
| headers. SCHC avoids context synchronization, which is the most | headers. SCHC avoids context synchronization, which is the most | |||
| bandwidth-consuming operation in other header compression mechanisms | bandwidth-consuming operation in other header compression mechanisms | |||
| such as RoHC [RFC5795]. Since the nature of packets is highly | such as RoHC [RFC5795]. Since the nature of packets is highly | |||
| predictable in LPWAN networks, static contexts MAY be stored | predictable in LPWAN networks, static contexts MAY be stored | |||
| beforehand to omit transmitting some information over the air. The | beforehand to omit transmitting some information over the air. The | |||
| contexts MUST be stored at both ends, and they can be learned by a | contexts MUST be stored at both ends, and they can be learned by a | |||
| provisioning protocol or by out of band means, or they can be pre- | provisioning protocol or by out of band means, or they can be pre- | |||
| provisioned. The way the contexts are provisioned on both ends is | provisioned. The way the contexts are provisioned on both ends is | |||
| out of the scope of this document. | out of the scope of this document. | |||
| 6.1. SCHC C/D Rules | 7.1. SCHC C/D Rules | |||
| The main idea of the SCHC compression scheme is to transmit the Rule | The main idea of the SCHC compression scheme is to transmit the Rule | |||
| ID to the other end instead of sending known field values. This Rule | ID to the other end instead of sending known field values. This Rule | |||
| ID identifies a Rule that provides the closest match to the original | ID identifies a Rule that provides the closest match to the original | |||
| packet values. Hence, when a value is known by both ends, it is only | packet values. Hence, when a value is known by both ends, it is only | |||
| necessary to send the corresponding Rule ID over the LPWAN network. | necessary to send the corresponding Rule ID over the LPWAN network. | |||
| How Rules are generated is out of the scope of this document. The | How Rules are generated is out of the scope of this document. The | |||
| Rules MAY be changed at run-time but the way to do this will be | Rules MAY be changed at run-time but the way to do this will be | |||
| specified in another document. | specified in another document. | |||
| skipping to change at page 15, line 6 ¶ | skipping to change at page 16, line 6 ¶ | |||
| o Target Value (TV) is the value used to make the match with the | o Target Value (TV) is the value used to make the match with the | |||
| packet header field. The Target Value can be of any type | packet header field. The Target Value can be of any type | |||
| (integer, strings, etc.). For instance, it can be a single value | (integer, strings, etc.). For instance, it can be a single value | |||
| or a more complex structure (array, list, etc.), such as a JSON or | or a more complex structure (array, list, etc.), such as a JSON or | |||
| a CBOR structure. | a CBOR structure. | |||
| o Matching Operator (MO) is the operator used to match the Field | o Matching Operator (MO) is the operator used to match the Field | |||
| Value and the Target Value. The Matching Operator may require | Value and the Target Value. The Matching Operator may require | |||
| some parameters. MO is only used during the compression phase. | some parameters. MO is only used during the compression phase. | |||
| The set of MOs defined in this document can be found in | The set of MOs defined in this document can be found in | |||
| Section 6.4. | Section 7.4. | |||
| o Compression Decompression Action (CDA) describes the compression | o Compression Decompression Action (CDA) describes the compression | |||
| and decompression processes to be performed after the MO is | and decompression processes to be performed after the MO is | |||
| applied. Some CDAs MAY require parameter values for their | applied. Some CDAs MAY require parameter values for their | |||
| operation. CDAs are used in both the compression and the | operation. CDAs are used in both the compression and the | |||
| decompression functions. The set of CDAs defined in this document | decompression functions. The set of CDAs defined in this document | |||
| can be found in Section 6.5. | can be found in Section 7.5. | |||
| 6.2. Rule ID for SCHC C/D | 7.2. Rule ID for SCHC C/D | |||
| Rule IDs are sent by the compression function in one side and are | Rule IDs are sent by the compression function in one side and are | |||
| received for the decompression function in the other side. In SCHC | received for the decompression function in the other side. In SCHC | |||
| C/D, the Rule IDs are specific to a Dev. Hence, multiple Dev | C/D, the Rule IDs are specific to a Dev. Hence, multiple Dev | |||
| instances MAY use the same Rule ID to define different header | instances MAY use the same Rule ID to define different header | |||
| compression contexts. To identify the correct Rule ID, the SCHC C/D | compression contexts. To identify the correct Rule ID, the SCHC C/D | |||
| needs to correlate the Rule ID with the Dev identifier to find the | needs to correlate the Rule ID with the Dev identifier to find the | |||
| appropriate Rule to be applied. | appropriate Rule to be applied. | |||
| 6.3. Packet processing | 7.3. Packet processing | |||
| The compression/decompression process follows several steps: | The compression/decompression process follows several steps: | |||
| o Compression Rule selection: The goal is to identify which Rule(s) | o Compression Rule selection: The goal is to identify which Rule(s) | |||
| will be used to compress the packet's headers. When doing | will be used to compress the packet's headers. When doing | |||
| decompression, on the network side the SCHC C/D needs to find the | decompression, on the network side the SCHC C/D needs to find the | |||
| correct Rule based on the L2 address and in this way, it can use | correct Rule based on the L2 address and in this way, it can use | |||
| the DevIID and the Rule ID. On the Dev side, only the Rule ID is | the DevIID and the Rule ID. On the Dev side, only the Rule ID is | |||
| needed to identify the correct Rule since the Dev only holds Rules | needed to identify the correct Rule since the Dev only holds Rules | |||
| that apply to itself. The Rule will be selected by matching the | that apply to itself. The Rule will be selected by matching the | |||
| skipping to change at page 16, line 33 ¶ | skipping to change at page 17, line 33 ¶ | |||
| empty) and directly followed by the payload. The Compression | empty) and directly followed by the payload. The Compression | |||
| Residue is the concatenation of the Compression Residues for each | Residue is the concatenation of the Compression Residues for each | |||
| field according to the CDAs for that Rule. The way the Rule ID is | field according to the CDAs for that Rule. The way the Rule ID is | |||
| sent depends on the specific underlying LPWAN technology. For | sent depends on the specific underlying LPWAN technology. For | |||
| example, it can be either included in an L2 header or sent in the | example, it can be either included in an L2 header or sent in the | |||
| first byte of the L2 payload. (Cf. Figure 9). This process will | first byte of the L2 payload. (Cf. Figure 9). This process will | |||
| be specified in the LPWAN technology-specific document and is out | be specified in the LPWAN technology-specific document and is out | |||
| of the scope of the present document. On LPWAN technologies that | of the scope of the present document. On LPWAN technologies that | |||
| are byte-oriented, the compressed header concatenated with the | are byte-oriented, the compressed header concatenated with the | |||
| original packet payload is padded to a multiple of 8 bits, if | original packet payload is padded to a multiple of 8 bits, if | |||
| needed. See Section 8 for details. | needed. See Section 9 for details. | |||
| o Decompression: When doing decompression, on the network side the | o Decompression: When doing decompression, on the network side the | |||
| SCHC C/D needs to find the correct Rule based on the L2 address | SCHC C/D needs to find the correct Rule based on the L2 address | |||
| and in this way, it can use the DevIID and the Rule ID. On the | and in this way, it can use the DevIID and the Rule ID. On the | |||
| Dev side, only the Rule ID is needed to identify the correct Rule | Dev side, only the Rule ID is needed to identify the correct Rule | |||
| since the Dev only holds Rules that apply to itself. | since the Dev only holds Rules that apply to itself. | |||
| The receiver identifies the sender through its device-id (e.g. | The receiver identifies the sender through its device-id (e.g. | |||
| MAC address, if exists) and selects the appropriate Rule from the | MAC address, if exists) and selects the appropriate Rule from the | |||
| Rule ID. If a source identifier is present in the L2 technology, | Rule ID. If a source identifier is present in the L2 technology, | |||
| skipping to change at page 17, line 13 ¶ | skipping to change at page 18, line 13 ¶ | |||
| Compute-* SHOULD be applied at the end, after all the other CDAs. | Compute-* SHOULD be applied at the end, after all the other CDAs. | |||
| +--- ... --+------- ... -------+------------------+ | +--- ... --+------- ... -------+------------------+ | |||
| | Rule ID |Compression Residue| packet payload | | | Rule ID |Compression Residue| packet payload | | |||
| +--- ... --+------- ... -------+------------------+ | +--- ... --+------- ... -------+------------------+ | |||
| |----- compressed header ------| | |----- compressed header ------| | |||
| Figure 9: SCHC C/D Packet Format | Figure 9: SCHC C/D Packet Format | |||
| 6.4. Matching operators | 7.4. Matching operators | |||
| Matching Operators (MOs) are functions used by both SCHC C/D | Matching Operators (MOs) are functions used by both SCHC C/D | |||
| endpoints involved in the header compression/decompression. They are | endpoints involved in the header compression/decompression. They are | |||
| not typed and can be indifferently applied to integer, string or any | not typed and can be indifferently applied to integer, string or any | |||
| other data type. The result of the operation can either be True or | other data type. The result of the operation can either be True or | |||
| False. MOs are defined as follows: | False. MOs are defined as follows: | |||
| o equal: The match result is True if a field value in a packet and | o equal: The match result is True if a field value in a packet and | |||
| the value in the TV are equal. | the value in the TV are equal. | |||
| skipping to change at page 17, line 41 ¶ | skipping to change at page 18, line 41 ¶ | |||
| must be a multiple of the unit. For example, x must be multiple | must be a multiple of the unit. For example, x must be multiple | |||
| of 8 if the unit of the variable length is in bytes. | of 8 if the unit of the variable length is in bytes. | |||
| o match-mapping: With match-mapping, the Target Value is a list of | o match-mapping: With match-mapping, the Target Value is a list of | |||
| values. Each value of the list is identified by a short ID (or | values. Each value of the list is identified by a short ID (or | |||
| index). Compression is achieved by sending the index instead of | index). Compression is achieved by sending the index instead of | |||
| the original header field value. This operator matches if the | the original header field value. This operator matches if the | |||
| header field value is equal to one of the values in the target | header field value is equal to one of the values in the target | |||
| list. | list. | |||
| 6.5. Compression Decompression Actions (CDA) | 7.5. Compression Decompression Actions (CDA) | |||
| The Compression Decompression Action (CDA) describes the actions | The Compression Decompression Action (CDA) describes the actions | |||
| taken during the compression of headers fields, and inversely, the | taken during the compression of headers fields, and inversely, the | |||
| action taken by the decompressor to restore the original value. | action taken by the decompressor to restore the original value. | |||
| /--------------------+-------------+----------------------------\ | /--------------------+-------------+----------------------------\ | |||
| | Action | Compression | Decompression | | | Action | Compression | Decompression | | |||
| | | | | | | | | | | |||
| +--------------------+-------------+----------------------------+ | +--------------------+-------------+----------------------------+ | |||
| |not-sent |elided |use value stored in context | | |not-sent |elided |use value stored in context | | |||
| skipping to change at page 19, line 5 ¶ | skipping to change at page 20, line 5 ¶ | |||
| o For values between 15 and 254, the first 4 bits sent are set to 1 | o For values between 15 and 254, the first 4 bits sent are set to 1 | |||
| and the size is sent using 8 bits integer. | and the size is sent using 8 bits integer. | |||
| o For higher values of size, the first 12 bits are set to 1 and the | o For higher values of size, the first 12 bits are set to 1 and the | |||
| next two bytes contain the size value as a 16 bits integer. | next two bytes contain the size value as a 16 bits integer. | |||
| If a field is not present in the packet but exists in the Rule and | If a field is not present in the packet but exists in the Rule and | |||
| its FL is specified as being variable, size 0 MUST be sent to denote | its FL is specified as being variable, size 0 MUST be sent to denote | |||
| its absence. | its absence. | |||
| 6.5.1. not-sent CDA | 7.5.1. not-sent CDA | |||
| The not-sent function is generally used when the field value is | The not-sent function is generally used when the field value is | |||
| specified in a Rule and therefore known by both the Compressor and | specified in a Rule and therefore known by both the Compressor and | |||
| the Decompressor. This action is generally used with the "equal" MO. | the Decompressor. This action is generally used with the "equal" MO. | |||
| If MO is "ignore", there is a risk to have a decompressed field value | If MO is "ignore", there is a risk to have a decompressed field value | |||
| different from the original field that was compressed. | different from the original field that was compressed. | |||
| The compressor does not send any Compression Residue for a field on | The compressor does not send any Compression Residue for a field on | |||
| which not-sent compression is applied. | which not-sent compression is applied. | |||
| The decompressor restores the field value with the Target Value | The decompressor restores the field value with the Target Value | |||
| stored in the matched Rule identified by the received Rule ID. | stored in the matched Rule identified by the received Rule ID. | |||
| 6.5.2. value-sent CDA | 7.5.2. value-sent CDA | |||
| The value-sent action is generally used when the field value is not | The value-sent action is generally used when the field value is not | |||
| known by both the Compressor and the Decompressor. The value is sent | known by both the Compressor and the Decompressor. The value is sent | |||
| as a residue in the compressed message header. Both Compressor and | as a residue in the compressed message header. Both Compressor and | |||
| Decompressor MUST know the size of the field, either implicitly (the | Decompressor MUST know the size of the field, either implicitly (the | |||
| size is known by both sides) or by explicitly indicating the length | size is known by both sides) or by explicitly indicating the length | |||
| in the Compression Residue, as defined in Section 6.5. This function | in the Compression Residue, as defined in Section 7.5. This function | |||
| is generally used with the "ignore" MO. | is generally used with the "ignore" MO. | |||
| 6.5.3. mapping-sent CDA | 7.5.3. mapping-sent CDA | |||
| The mapping-sent is used to send a smaller index (the index into the | The mapping-sent is used to send a smaller index (the index into the | |||
| Target Value list of values) instead of the original value. This | Target Value list of values) instead of the original value. This | |||
| function is used together with the "match-mapping" MO. | function is used together with the "match-mapping" MO. | |||
| On the compressor side, the match-mapping Matching Operator searches | On the compressor side, the match-mapping Matching Operator searches | |||
| the TV for a match with the header field value and the mapping-sent | the TV for a match with the header field value and the mapping-sent | |||
| CDA appends the corresponding index to the Compression Residue to be | CDA appends the corresponding index to the Compression Residue to be | |||
| sent. On the decompressor side, the CDA uses the received index to | sent. On the decompressor side, the CDA uses the received index to | |||
| restore the field value by looking up the list in the TV. | restore the field value by looking up the list in the TV. | |||
| The number of bits sent is the minimal size for coding all the | The number of bits sent is the minimal size for coding all the | |||
| possible indices. | possible indices. | |||
| 6.5.4. LSB CDA | 7.5.4. LSB CDA | |||
| The LSB action is used together with the "MSB(x)" MO to avoid sending | The LSB action is used together with the "MSB(x)" MO to avoid sending | |||
| the most significant part of the packet field if that part is already | the most significant part of the packet field if that part is already | |||
| known by the receiving end. The number of bits sent is the original | known by the receiving end. The number of bits sent is the original | |||
| header field length minus the length specified in the MSB(x) MO. | header field length minus the length specified in the MSB(x) MO. | |||
| The compressor sends the Least Significant Bits (e.g. LSB of the | The compressor sends the Least Significant Bits (e.g. LSB of the | |||
| length field). The decompressor concatenates the x most significant | length field). The decompressor concatenates the x most significant | |||
| bits of Target Value and the received residue. | bits of Target Value and the received residue. | |||
| If this action needs to be done on a variable length field, the size | If this action needs to be done on a variable length field, the size | |||
| of the Compression Residue in bytes MUST be sent as described in | of the Compression Residue in bytes MUST be sent as described in | |||
| Section 6.5. | Section 7.5. | |||
| 6.5.5. DevIID, AppIID CDA | 7.5.5. DevIID, AppIID CDA | |||
| These functions are used to process respectively the Dev and the App | These functions are used to process respectively the Dev and the App | |||
| Interface Identifiers (DevIID and AppIID) of the IPv6 addresses. | Interface Identifiers (DevIID and AppIID) of the IPv6 addresses. | |||
| AppIID CDA is less common since current LPWAN technologies frames | AppIID CDA is less common since current LPWAN technologies frames | |||
| contain a single address, which is the Dev's address. | contain a single address, which is the Dev's address. | |||
| The IID value MAY be computed from the Device ID present in the L2 | The IID value MAY be computed from the Device ID present in the L2 | |||
| header, or from some other stable identifier. The computation is | header, or from some other stable identifier. The computation is | |||
| specific to each LPWAN technology and MAY depend on the Device ID | specific to each LPWAN technology and MAY depend on the Device ID | |||
| size. | size. | |||
| In the downlink direction (Dw), at the compressor, this DevIID CDA | In the downlink direction (Dw), at the compressor, this DevIID CDA | |||
| may be used to generate the L2 addresses on the LPWAN, based on the | may be used to generate the L2 addresses on the LPWAN, based on the | |||
| packet destination address. | packet destination address. | |||
| 6.5.6. Compute-* | 7.5.6. Compute-* | |||
| Some fields are elided during compression and reconstructed during | Some fields are elided during compression and reconstructed during | |||
| decompression. This is the case for length and checksum, so: | decompression. This is the case for length and checksum, so: | |||
| o compute-length: computes the length assigned to this field. This | o compute-length: computes the length assigned to this field. This | |||
| CDA MAY be used to compute IPv6 length or UDP length. | CDA MAY be used to compute IPv6 length or UDP length. | |||
| o compute-checksum: computes a checksum from the information already | o compute-checksum: computes a checksum from the information already | |||
| received by the SCHC C/D. This field MAY be used to compute UDP | received by the SCHC C/D. This field MAY be used to compute UDP | |||
| checksum. | checksum. | |||
| 7. Fragmentation | 8. Fragmentation | |||
| 7.1. Overview | 8.1. Overview | |||
| In LPWAN technologies, the L2 data unit size typically varies from | In LPWAN technologies, the L2 data unit size typically varies from | |||
| tens to hundreds of bytes. The SCHC F/R (Fragmentation /Reassembly) | tens to hundreds of bytes. The SCHC F/R (Fragmentation /Reassembly) | |||
| MAY be used either because after applying SCHC C/D or when SCHC C/D | MAY be used either because after applying SCHC C/D or when SCHC C/D | |||
| is not possible the entire SCHC Packet still exceeds the L2 data | is not possible the entire SCHC Packet still exceeds the L2 data | |||
| unit. | unit. | |||
| The SCHC F/R functionality defined in this document has been designed | The SCHC F/R functionality defined in this document has been designed | |||
| under the assumption that data unit out-of-sequence delivery will not | under the assumption that data unit out-of-sequence delivery will not | |||
| happen between the entity performing fragmentation and the entity | happen between the entity performing fragmentation and the entity | |||
| skipping to change at page 21, line 19 ¶ | skipping to change at page 22, line 19 ¶ | |||
| while a fragmented SCHC Packet is being transmitted. | while a fragmented SCHC Packet is being transmitted. | |||
| To adapt the SCHC F/R to the capabilities of LPWAN technologies, it | To adapt the SCHC F/R to the capabilities of LPWAN technologies, it | |||
| is required to enable optional SCHC Fragment retransmission and to | is required to enable optional SCHC Fragment retransmission and to | |||
| allow for a range of reliability options for sending the SCHC | allow for a range of reliability options for sending the SCHC | |||
| Fragments. This document does not make any decision with regard to | Fragments. This document does not make any decision with regard to | |||
| which SCHC Fragment delivery reliability mode will be used over a | which SCHC Fragment delivery reliability mode will be used over a | |||
| specific LPWAN technology. These details will be defined in other | specific LPWAN technology. These details will be defined in other | |||
| technology-specific documents. | technology-specific documents. | |||
| SCHC F/R uses the knowledge of the L2 Word size (see Section 3) to | SCHC F/R uses the knowledge of the L2 Word size (see Section 4) to | |||
| encode some messages. Therefore, SCHC MUST know the L2 Word size. | encode some messages. Therefore, SCHC MUST know the L2 Word size. | |||
| SCHC F/R generates SCHC Fragments and SCHC ACKs that are, for most of | SCHC F/R generates SCHC Fragments and SCHC ACKs that are, for most of | |||
| them, multiples of L2 Words. The padding overhead is kept to the | them, multiples of L2 Words. The padding overhead is kept to the | |||
| absolute minimum. See Section 8. | absolute minimum. See Section 9. | |||
| 7.2. Fragmentation Tools | 8.2. Fragmentation Tools | |||
| This subsection describes the different tools that are used to enable | This subsection describes the different tools that are used to enable | |||
| the SCHC F/R functionality defined in this document, such as fields | the SCHC F/R functionality defined in this document, such as fields | |||
| in the SCHC F/R header frames (see the related formats in | in the SCHC F/R header frames (see the related formats in | |||
| Section 7.4), windows and timers. | Section 8.4), windows and timers. | |||
| o Rule ID. The Rule ID is present in the SCHC Fragment header and | o Rule ID. The Rule ID is present in the SCHC Fragment header and | |||
| in the SCHC ACK header formats. The Rule ID in a SCHC Fragment | in the SCHC ACK header formats. The Rule ID in a SCHC Fragment | |||
| header is used to identify that a SCHC Fragment is being carried, | header is used to identify that a SCHC Fragment is being carried, | |||
| which SCHC F/R reliability mode is used and which window size is | which SCHC F/R reliability mode is used and which window size is | |||
| used. The Rule ID in the SCHC Fragment header also allows | used. The Rule ID in the SCHC Fragment header also allows | |||
| interleaving non-fragmented SCHC Packets and SCHC Fragments that | interleaving non-fragmented SCHC Packets and SCHC Fragments that | |||
| carry other SCHC Packets. The Rule ID in a SCHC ACK identifies | carry other SCHC Packets. The Rule ID in a SCHC ACK identifies | |||
| the message as a SCHC ACK. | the message as a SCHC ACK. | |||
| skipping to change at page 22, line 28 ¶ | skipping to change at page 23, line 28 ¶ | |||
| the corresponding technology-specific profile documents. For | the corresponding technology-specific profile documents. For | |||
| windows that are not the last one of a fragmented SCHC Packet, the | windows that are not the last one of a fragmented SCHC Packet, the | |||
| FCN for the last SCHC Fragment in such windows is an All-0. This | FCN for the last SCHC Fragment in such windows is an All-0. This | |||
| indicates that the window is finished and communication proceeds | indicates that the window is finished and communication proceeds | |||
| according to the reliability mode in use. The FCN for the last | according to the reliability mode in use. The FCN for the last | |||
| SCHC Fragment in the last window is an All-1, indicating the last | SCHC Fragment in the last window is an All-1, indicating the last | |||
| SCHC Fragment of the SCHC Packet. It is also important to note | SCHC Fragment of the SCHC Packet. It is also important to note | |||
| that, in the No-ACK mode or when N=1, the last SCHC Fragment of | that, in the No-ACK mode or when N=1, the last SCHC Fragment of | |||
| the packet will carry a FCN equal to 1, while all previous SCHC | the packet will carry a FCN equal to 1, while all previous SCHC | |||
| Fragments will carry a FCN to 0. For further details see | Fragments will carry a FCN to 0. For further details see | |||
| Section 7.5. The highest FCN in the window, denoted MAX_WIND_FCN, | Section 8.5. The highest FCN in the window, denoted MAX_WIND_FCN, | |||
| MUST be a value equal to or smaller than 2^N-2. (Example for N=5, | MUST be a value equal to or smaller than 2^N-2. (Example for N=5, | |||
| MAX_WIND_FCN MAY be set to 23, then subsequent FCNs are set | MAX_WIND_FCN MAY be set to 23, then subsequent FCNs are set | |||
| sequentially and in decreasing order, and the FCN will wrap from 0 | sequentially and in decreasing order, and the FCN will wrap from 0 | |||
| back to 23). | back to 23). | |||
| o Datagram Tag (DTag). The DTag field, if present, is set to the | o Datagram Tag (DTag). The DTag field, if present, is set to the | |||
| same value for all SCHC Fragments carrying the same SCHC | same value for all SCHC Fragments carrying the same SCHC | |||
| packet, and to different values for different SCHC Packets. Using | packet, and to different values for different SCHC Packets. Using | |||
| this field, the sender can interleave fragments from different | this field, the sender can interleave fragments from different | |||
| SCHC Packets, while the receiver can still tell them apart. In | SCHC Packets, while the receiver can still tell them apart. In | |||
| skipping to change at page 24, line 21 ¶ | skipping to change at page 25, line 21 ¶ | |||
| current window, and provides feedback on whether the SCHC Fragment | current window, and provides feedback on whether the SCHC Fragment | |||
| has been received or not. The right-most position on the Bitmap | has been received or not. The right-most position on the Bitmap | |||
| reports if the All-0 or All-1 fragment has been received or not. | reports if the All-0 or All-1 fragment has been received or not. | |||
| Feedback on the SCHC fragment with the highest FCN value is | Feedback on the SCHC fragment with the highest FCN value is | |||
| provided by the bit in the left-most position of the Bitmap. In | provided by the bit in the left-most position of the Bitmap. In | |||
| the Bitmap, a bit set to 1 indicates that the SCHC Fragment of FCN | the Bitmap, a bit set to 1 indicates that the SCHC Fragment of FCN | |||
| corresponding to that bit position has been correctly sent and | corresponding to that bit position has been correctly sent and | |||
| received. The text above describes the internal representation of | received. The text above describes the internal representation of | |||
| the Bitmap. When inserted in the SCHC ACK for transmission from | the Bitmap. When inserted in the SCHC ACK for transmission from | |||
| the receiver to the sender, the Bitmap is shortened for energy/ | the receiver to the sender, the Bitmap is shortened for energy/ | |||
| bandwidth optimisation, see more details in Section 7.4.3.1. | bandwidth optimisation, see more details in Section 8.4.3.1. | |||
| o Abort. On expiration of the Inactivity timer, or when Attempts | o Abort. On expiration of the Inactivity timer, or when Attempts | |||
| reaches MAX_ACK_REQUESTS or upon occurrence of some other error, | reaches MAX_ACK_REQUESTS or upon occurrence of some other error, | |||
| the sender or the receiver may use the Abort. When the receiver | the sender or the receiver may use the Abort. When the receiver | |||
| needs to abort the on-going fragmented SCHC Packet transmission, | needs to abort the on-going fragmented SCHC Packet transmission, | |||
| it sends the Receiver-Abort format. When the sender needs to | it sends the Receiver-Abort format. When the sender needs to | |||
| abort the transmission, it sends the Sender-Abort format. None of | abort the transmission, it sends the Sender-Abort format. None of | |||
| the Aborts are acknowledged. | the Aborts are acknowledged. | |||
| 7.3. Reliability modes | 8.3. Reliability modes | |||
| This specification defines three reliability modes: No-ACK, ACK- | This specification defines three reliability modes: No-ACK, ACK- | |||
| Always, and ACK-on-Error. ACK-Always and ACK-on-Error operate on | Always, and ACK-on-Error. ACK-Always and ACK-on-Error operate on | |||
| windows of SCHC Fragments. A window of SCHC Fragments is a subset of | windows of SCHC Fragments. A window of SCHC Fragments is a subset of | |||
| the full set of SCHC Fragments needed to carry a SCHC Packet. | the full set of SCHC Fragments needed to carry a SCHC Packet. | |||
| o No-ACK. No-ACK is the simplest SCHC Fragment reliability mode. | o No-ACK. No-ACK is the simplest SCHC Fragment reliability mode. | |||
| The receiver does not generate overhead in the form of | The receiver does not generate overhead in the form of | |||
| acknowledgements (ACKs). However, this mode does not enhance | acknowledgements (ACKs). However, this mode does not enhance | |||
| reliability beyond that offered by the underlying LPWAN | reliability beyond that offered by the underlying LPWAN | |||
| technology. In the No-ACK mode, the receiver MUST NOT issue SCHC | technology. In the No-ACK mode, the receiver MUST NOT issue SCHC | |||
| ACKs. See further details in Section 7.5.1. | ACKs. See further details in Section 8.5.1. | |||
| o ACK-Always. The ACK-Always mode provides flow control using a | o ACK-Always. The ACK-Always mode provides flow control using a | |||
| windowing scheme. This mode is also able to handle long bursts of | windowing scheme. This mode is also able to handle long bursts of | |||
| lost SCHC Fragments since detection of such events can be done | lost SCHC Fragments since detection of such events can be done | |||
| before the end of the SCHC Packet transmission as long as the | before the end of the SCHC Packet transmission as long as the | |||
| window size is short enough. However, such benefit comes at the | window size is short enough. However, such benefit comes at the | |||
| expense of SCHC ACK use. In ACK-Always, the receiver sends a SCHC | expense of SCHC ACK use. In ACK-Always, the receiver sends a SCHC | |||
| ACK after a window of SCHC Fragments has been received. The SCHC | ACK after a window of SCHC Fragments has been received. The SCHC | |||
| ACK is used to inform the sender which SCHC Fragments in the | ACK is used to inform the sender which SCHC Fragments in the | |||
| current window have been well received. Upon a SCHC ACK | current window have been well received. Upon a SCHC ACK | |||
| reception, the sender retransmits the lost SCHC Fragments. When a | reception, the sender retransmits the lost SCHC Fragments. When a | |||
| SCHC ACK is lost and the sender has not received it by the | SCHC ACK is lost and the sender has not received it by the | |||
| expiration of the Retransmission Timer, the sender uses a SCHC ACK | expiration of the Retransmission Timer, the sender uses a SCHC ACK | |||
| request by sending the All-0 empty SCHC Fragment when it is not | request by sending the All-0 empty SCHC Fragment when it is not | |||
| the last window and the All-1 empty Fragment when it is the last | the last window and the All-1 empty Fragment when it is the last | |||
| window. The maximum number of SCHC ACK requests is | window. The maximum number of SCHC ACK requests is | |||
| MAX_ACK_REQUESTS. If MAX_ACK_REQUESTS is reached, the | MAX_ACK_REQUESTS. If MAX_ACK_REQUESTS is reached, the | |||
| transmission needs to be aborted. See further details in | transmission needs to be aborted. See further details in | |||
| Section 7.5.2. | Section 8.5.2. | |||
| o ACK-on-Error. The ACK-on-Error mode is suitable for links | o ACK-on-Error. The ACK-on-Error mode is suitable for links | |||
| offering relatively low L2 data unit loss probability. In this | offering relatively low L2 data unit loss probability. In this | |||
| mode, the SCHC Fragment receiver reduces the number of SCHC ACKs | mode, the SCHC Fragment receiver reduces the number of SCHC ACKs | |||
| transmitted, which MAY be especially beneficial in asymmetric | transmitted, which MAY be especially beneficial in asymmetric | |||
| scenarios. The receiver transmits a SCHC ACK only after the | scenarios. The receiver transmits a SCHC ACK only after the | |||
| complete window transmission and if at least one SCHC Fragment of | complete window transmission and if at least one SCHC Fragment of | |||
| this window has been lost. An exception to this behavior is in | this window has been lost. An exception to this behavior is in | |||
| the last window, where the receiver MUST transmit a SCHC ACK, | the last window, where the receiver MUST transmit a SCHC ACK, | |||
| including the C bit set based on the MIC checked result, even if | including the C bit set based on the MIC checked result, even if | |||
| skipping to change at page 25, line 38 ¶ | skipping to change at page 26, line 38 ¶ | |||
| reception, the sender retransmits any lost SCHC Fragments based on | reception, the sender retransmits any lost SCHC Fragments based on | |||
| the SCHC ACK. If a SCHC ACK is not transmitted back by the | the SCHC ACK. If a SCHC ACK is not transmitted back by the | |||
| receiver at the end of a window, the sender assumes that all SCHC | receiver at the end of a window, the sender assumes that all SCHC | |||
| Fragments have been correctly received. When a SCHC ACK is lost, | Fragments have been correctly received. When a SCHC ACK is lost, | |||
| the sender assumes that all SCHC Fragments covered by the lost | the sender assumes that all SCHC Fragments covered by the lost | |||
| SCHC ACK have been successfully delivered, so the sender continues | SCHC ACK have been successfully delivered, so the sender continues | |||
| transmitting the next window of SCHC Fragments. If the next SCHC | transmitting the next window of SCHC Fragments. If the next SCHC | |||
| Fragments received belong to the next window and it is still | Fragments received belong to the next window and it is still | |||
| expecting fragments from the previous window, the receiver will | expecting fragments from the previous window, the receiver will | |||
| abort the on-going fragmented packet transmission. See further | abort the on-going fragmented packet transmission. See further | |||
| details in Section 7.5.3. | details in Section 8.5.3. | |||
| The same reliability mode MUST be used for all SCHC Fragments of a | The same reliability mode MUST be used for all SCHC Fragments of a | |||
| SCHC Packet. The decision on which reliability mode will be used and | SCHC Packet. The decision on which reliability mode will be used and | |||
| whether the same reliability mode applies to all SCHC Packets is an | whether the same reliability mode applies to all SCHC Packets is an | |||
| implementation problem and is out of the scope of this document. | implementation problem and is out of the scope of this document. | |||
| Note that the reliability mode choice is not necessarily tied to a | Note that the reliability mode choice is not necessarily tied to a | |||
| particular characteristic of the underlying L2 LPWAN technology, e.g. | particular characteristic of the underlying L2 LPWAN technology, e.g. | |||
| the No-ACK mode MAY be used on top of an L2 LPWAN technology with | the No-ACK mode MAY be used on top of an L2 LPWAN technology with | |||
| symmetric characteristics for uplink and downlink. This document | symmetric characteristics for uplink and downlink. This document | |||
| does not make any decision as to which SCHC Fragment reliability | does not make any decision as to which SCHC Fragment reliability | |||
| modes are relevant for a specific LPWAN technology. | modes are relevant for a specific LPWAN technology. | |||
| Examples of the different reliability modes described are provided in | Examples of the different reliability modes described are provided in | |||
| Appendix B. | Appendix B. | |||
| 7.4. Fragmentation Formats | 8.4. Fragmentation Formats | |||
| This section defines the SCHC Fragment format, including the All-0 | This section defines the SCHC Fragment format, including the All-0 | |||
| and All-1 formats and their "empty" variations, the SCHC ACK format | and All-1 formats and their "empty" variations, the SCHC ACK format | |||
| and the Abort formats. | and the Abort formats. | |||
| A SCHC Fragment conforms to the general format shown in Figure 11. | A SCHC Fragment conforms to the general format shown in Figure 11. | |||
| It comprises a SCHC Fragment Header and a SCHC Fragment Payload. In | It comprises a SCHC Fragment Header and a SCHC Fragment Payload. In | |||
| addition, the last SCHC Fragment carries as many padding bits as | addition, the last SCHC Fragment carries as many padding bits as | |||
| needed to fill up an L2 Word. The SCHC Fragment Payload carries a | needed to fill up an L2 Word. The SCHC Fragment Payload carries a | |||
| subset of the SCHC Packet. The SCHC Fragment is the data unit passed | subset of the SCHC Packet. The SCHC Fragment is the data unit passed | |||
| on to the L2 for transmission. | on to the L2 for transmission. | |||
| +-----------------+-----------------------+~~~~~~~~~~~~~~~~~~~~~ | +-----------------+-----------------------+~~~~~~~~~~~~~~~~~~~~~ | |||
| | Fragment Header | Fragment payload | padding (as needed) | | Fragment Header | Fragment payload | padding (as needed) | |||
| +-----------------+-----------------------+~~~~~~~~~~~~~~~~~~~~~ | +-----------------+-----------------------+~~~~~~~~~~~~~~~~~~~~~ | |||
| Figure 11: SCHC Fragment general format. Presence of a padding field | Figure 11: SCHC Fragment general format. Presence of a padding field | |||
| is optional | is optional | |||
| 7.4.1. Fragments that are not the last one | 8.4.1. Fragments that are not the last one | |||
| In ACK-Always or ACK-on-Error, SCHC Fragments except the last one | In ACK-Always or ACK-on-Error, SCHC Fragments except the last one | |||
| SHALL conform to the detailed format defined in Figure 12. | SHALL conform to the detailed format defined in Figure 12. | |||
| |----- Fragment Header -----| | |----- Fragment Header -----| | |||
| |-- T --|1|-- N --| | |-- T --|1|-- N --| | |||
| +-- ... --+- ... -+-+- ... -+--------...-------+ | +-- ... --+- ... -+-+- ... -+--------...-------+ | |||
| | Rule ID | DTag |W| FCN | Fragment payload | | | Rule ID | DTag |W| FCN | Fragment payload | | |||
| +-- ... --+- ... -+-+- ... -+--------...-------+ | +-- ... --+- ... -+-+- ... -+--------...-------+ | |||
| skipping to change at page 27, line 20 ¶ | skipping to change at page 28, line 20 ¶ | |||
| Figure 13: Fragment Detailed Format for Fragments except the Last | Figure 13: Fragment Detailed Format for Fragments except the Last | |||
| One, No-ACK mode | One, No-ACK mode | |||
| The total size of the fragment header is not necessarily a multiple | The total size of the fragment header is not necessarily a multiple | |||
| of the L2 Word size. To build the fragment payload, SCHC F/R MUST | of the L2 Word size. To build the fragment payload, SCHC F/R MUST | |||
| take from the SCHC Packet a number of bits that makes the SCHC | take from the SCHC Packet a number of bits that makes the SCHC | |||
| Fragment an exact multiple of L2 Words. As a consequence, no padding | Fragment an exact multiple of L2 Words. As a consequence, no padding | |||
| bit is used for these fragments. | bit is used for these fragments. | |||
| 7.4.1.1. All-0 fragment | 8.4.1.1. All-0 fragment | |||
| The All-0 format is used for sending the last SCHC Fragment of a | The All-0 format is used for sending the last SCHC Fragment of a | |||
| window that is not the last window of the SCHC Packet. | window that is not the last window of the SCHC Packet. | |||
| |----- Fragment Header -----| | |----- Fragment Header -----| | |||
| |-- T --|1|-- N --| | |-- T --|1|-- N --| | |||
| +-- ... --+- ... -+-+- ... -+--------...-------+ | +-- ... --+- ... -+-+- ... -+--------...-------+ | |||
| | Rule ID | DTag |W| 0..0 | Fragment payload | | | Rule ID | DTag |W| 0..0 | Fragment payload | | |||
| +-- ... --+- ... -+-+- ... -+--------...-------+ | +-- ... --+- ... -+-+- ... -+--------...-------+ | |||
| Figure 14: All-0 fragment detailed format | Figure 14: All-0 fragment detailed format | |||
| This is simply an instance of the format described in Figure 12. An | This is simply an instance of the format described in Figure 12. An | |||
| All-0 fragment payload MUST be at least the size of an L2 Word. The | All-0 fragment payload MUST be at least the size of an L2 Word. The | |||
| rationale is that the All-0 empty fragment (see Section 7.4.1.2) | rationale is that the All-0 empty fragment (see Section 8.4.1.2) | |||
| needs to be distinguishable from the All-0 regular fragment, even in | needs to be distinguishable from the All-0 regular fragment, even in | |||
| the presence of padding. | the presence of padding. | |||
| 7.4.1.2. All-0 empty fragment | 8.4.1.2. All-0 empty fragment | |||
| The All-0 empty fragment is an exception to the All-0 fragment | The All-0 empty fragment is an exception to the All-0 fragment | |||
| described above. It is used by a sender to request the | described above. It is used by a sender to request the | |||
| retransmission of a SCHC ACK by the receiver. It is only used in | retransmission of a SCHC ACK by the receiver. It is only used in | |||
| ACK-Always mode. | ACK-Always mode. | |||
| |----- Fragment Header -----| | |----- Fragment Header -----| | |||
| |-- T --|1|-- N --| | |-- T --|1|-- N --| | |||
| +-- ... --+- ... -+-+- ... -+~~~~~~~~~~~~~~~~~~~~~ | +-- ... --+- ... -+-+- ... -+~~~~~~~~~~~~~~~~~~~~~ | |||
| | Rule ID | DTag |W| 0..0 | padding (as needed) (no payload) | | Rule ID | DTag |W| 0..0 | padding (as needed) (no payload) | |||
| skipping to change at page 28, line 21 ¶ | skipping to change at page 29, line 21 ¶ | |||
| Figure 15: All-0 empty fragment detailed format | Figure 15: All-0 empty fragment detailed format | |||
| The size of the All-0 fragment header is generally not a multiple of | The size of the All-0 fragment header is generally not a multiple of | |||
| the L2 Word size. Therefore, an All-0 empty fragment generally needs | the L2 Word size. Therefore, an All-0 empty fragment generally needs | |||
| padding bits. The padding bits are always less than an L2 Word. | padding bits. The padding bits are always less than an L2 Word. | |||
| Since an All-0 payload MUST be at least the size of an L2 Word, a | Since an All-0 payload MUST be at least the size of an L2 Word, a | |||
| receiver can distinguish an All-0 empty fragment from a regular All-0 | receiver can distinguish an All-0 empty fragment from a regular All-0 | |||
| fragment, even in the presence of padding. | fragment, even in the presence of padding. | |||
| 7.4.2. All-1 fragment | 8.4.2. All-1 fragment | |||
| In the No-ACK mode, the last SCHC Fragment of a SCHC Packet SHALL | In the No-ACK mode, the last SCHC Fragment of a SCHC Packet SHALL | |||
| contain a SCHC Fragment header that conforms to the detailed format | contain a SCHC Fragment header that conforms to the detailed format | |||
| shown in Figure 16. | shown in Figure 16. | |||
| |---------- Fragment Header ----------| | |---------- Fragment Header ----------| | |||
| |-- T --|-N=1-| | |-- T --|-N=1-| | |||
| +---- ... ---+- ... -+-----+-- ... --+---...---+~~~~~~~~~~~~~~~~~~~~~ | +---- ... ---+- ... -+-----+-- ... --+---...---+~~~~~~~~~~~~~~~~~~~~~ | |||
| | Rule ID | DTag | 1 | MIC | payload | padding (as needed) | | Rule ID | DTag | 1 | MIC | payload | padding (as needed) | |||
| +---- ... ---+- ... -+-----+-- ... --+---...---+~~~~~~~~~~~~~~~~~~~~~ | +---- ... ---+- ... -+-----+-- ... --+---...---+~~~~~~~~~~~~~~~~~~~~~ | |||
| skipping to change at page 29, line 19 ¶ | skipping to change at page 30, line 19 ¶ | |||
| generally appended to the All-1 fragment to make it a multiple of L2 | generally appended to the All-1 fragment to make it a multiple of L2 | |||
| Words in size. | Words in size. | |||
| The MIC MUST be computed on the payload and the padding bits. The | The MIC MUST be computed on the payload and the padding bits. The | |||
| rationale is that the SCHC Reassembler needs to check the correctness | rationale is that the SCHC Reassembler needs to check the correctness | |||
| of the reassembled SCHC packet but has no way of knowing where the | of the reassembled SCHC packet but has no way of knowing where the | |||
| payload ends. Indeed, the latter requires decompressing the SCHC | payload ends. Indeed, the latter requires decompressing the SCHC | |||
| Packet. | Packet. | |||
| An All-1 fragment payload MUST be at least the size of an L2 Word. | An All-1 fragment payload MUST be at least the size of an L2 Word. | |||
| The rationale is that the All-1 empty fragment (see Section 7.4.2.1) | The rationale is that the All-1 empty fragment (see Section 8.4.2.1) | |||
| needs to be distinguishable from the All-1 fragment, even in the | needs to be distinguishable from the All-1 fragment, even in the | |||
| presence of padding. This may entail saving an L2 Word from the | presence of padding. This may entail saving an L2 Word from the | |||
| previous fragment payload to make the payload of this All-1 fragment | previous fragment payload to make the payload of this All-1 fragment | |||
| big enough. | big enough. | |||
| The values for N, T and the length of MIC are not specified in this | The values for N, T and the length of MIC are not specified in this | |||
| document, and SHOULD be determined in other documents (e.g. | document, and SHOULD be determined in other documents (e.g. | |||
| technology-specific profile documents). | technology-specific profile documents). | |||
| The length of the MIC MUST be at least an L2 Word size. The | The length of the MIC MUST be at least an L2 Word size. The | |||
| rationale is to be able to distinguish a Sender-Abort (see | rationale is to be able to distinguish a Sender-Abort (see | |||
| Section 7.4.4) from an All-1 Fragment, even in the presence of | Section 8.4.4) from an All-1 Fragment, even in the presence of | |||
| padding. | padding. | |||
| 7.4.2.1. All-1 empty fragment | 8.4.2.1. All-1 empty fragment | |||
| The All-1 empty fragment format is an All-1 fragment format without a | The All-1 empty fragment format is an All-1 fragment format without a | |||
| payload (see Figure 18). It is used by a fragment sender, in either | payload (see Figure 18). It is used by a fragment sender, in either | |||
| ACK-Always or ACK-on-Error, to request a retransmission of the SCHC | ACK-Always or ACK-on-Error, to request a retransmission of the SCHC | |||
| ACK for the All-1 window. | ACK for the All-1 window. | |||
| The size of the All-1 empty fragment header is generally not a | The size of the All-1 empty fragment header is generally not a | |||
| multiple of the L2 Word size. Therefore, an All-1 empty fragment | multiple of the L2 Word size. Therefore, an All-1 empty fragment | |||
| generally needs padding bits. The padding bits are always less than | generally needs padding bits. The padding bits are always less than | |||
| an L2 Word. | an L2 Word. | |||
| skipping to change at page 30, line 13 ¶ | skipping to change at page 31, line 13 ¶ | |||
| fragment, even in the presence of padding. | fragment, even in the presence of padding. | |||
| |---------- Fragment Header --------| | |---------- Fragment Header --------| | |||
| |-- T --|1|-- N --| | |-- T --|1|-- N --| | |||
| +-- ... --+- ... -+-+- ... -+- ... -+~~~~~~~~~~~~~~~~~~~ | +-- ... --+- ... -+-+- ... -+- ... -+~~~~~~~~~~~~~~~~~~~ | |||
| | Rule ID | DTag |W| 1..1 | MIC | padding as needed (no payload) | | Rule ID | DTag |W| 1..1 | MIC | padding as needed (no payload) | |||
| +-- ... --+- ... -+-+- ... -+- ... -+~~~~~~~~~~~~~~~~~~~ | +-- ... --+- ... -+-+- ... -+- ... -+~~~~~~~~~~~~~~~~~~~ | |||
| Figure 18: All-1 for Retries format, also called All-1 empty | Figure 18: All-1 for Retries format, also called All-1 empty | |||
| 7.4.3. SCHC ACK format | 8.4.3. SCHC ACK format | |||
| The format of a SCHC ACK that acknowledges a window that is not the | The format of a SCHC ACK that acknowledges a window that is not the | |||
| last one (denoted as All-0 window) is shown in Figure 19. | last one (denoted as All-0 window) is shown in Figure 19. | |||
| |-- T --|1| | |-- T --|1| | |||
| +---- ... --+- ... -+-+---- ... -----+ | +---- ... --+- ... -+-+---- ... -----+ | |||
| | Rule ID | DTag |W|encoded Bitmap| (no payload) | | Rule ID | DTag |W|encoded Bitmap| (no payload) | |||
| +---- ... --+- ... -+-+---- ... -----+ | +---- ... --+- ... -+-+---- ... -----+ | |||
| Figure 19: ACK format for All-0 windows | Figure 19: ACK format for All-0 windows | |||
| skipping to change at page 30, line 49 ¶ | skipping to change at page 31, line 49 ¶ | |||
| C | C | |||
| Figure 20: Format of a SCHC ACK for All-1 windows | Figure 20: Format of a SCHC ACK for All-1 windows | |||
| The Rule ID and Dtag values in the SCHC ACK messages MUST be | The Rule ID and Dtag values in the SCHC ACK messages MUST be | |||
| identical to the ones used in the SCHC Fragments that are being | identical to the ones used in the SCHC Fragments that are being | |||
| acknowledged. This allows matching the SCHC ACK and the | acknowledged. This allows matching the SCHC ACK and the | |||
| corresponding SCHC Fragments. | corresponding SCHC Fragments. | |||
| The Bitmap carries information on the reception of each fragment of | The Bitmap carries information on the reception of each fragment of | |||
| the window as described in Section 7.2. | the window as described in Section 8.2. | |||
| See Appendix D for a discussion on the size of the Bitmaps. | See Appendix D for a discussion on the size of the Bitmaps. | |||
| In order to reduce the SCK ACK size, the Bitmap that is actually | In order to reduce the SCK ACK size, the Bitmap that is actually | |||
| transmitted is shortened ("encoded") as explained in Section 7.4.3.1. | transmitted is shortened ("encoded") as explained in Section 8.4.3.1. | |||
| 7.4.3.1. Bitmap Encoding | 8.4.3.1. Bitmap Encoding | |||
| The SCHC ACK that is transmitted is truncated by applying the | The SCHC ACK that is transmitted is truncated by applying the | |||
| following algorithm: the longest contiguous sequence of bits that | following algorithm: the longest contiguous sequence of bits that | |||
| starts at an L2 Word boundary of the SCHC ACK, where the bits of that | starts at an L2 Word boundary of the SCHC ACK, where the bits of that | |||
| sequence are all set to 1, are all part of the Bitmap and finish | sequence are all set to 1, are all part of the Bitmap and finish | |||
| exactly at the end of the Bitmap, if one such sequence exists, MUST | exactly at the end of the Bitmap, if one such sequence exists, MUST | |||
| NOT be transmitted. Because the SCHC Fragment sender knows the | NOT be transmitted. Because the SCHC Fragment sender knows the | |||
| actual Bitmap size, it can reconstruct the original Bitmap from the | actual Bitmap size, it can reconstruct the original Bitmap from the | |||
| shortened bitmap. | shortened bitmap. | |||
| skipping to change at page 32, line 39 ¶ | skipping to change at page 33, line 39 ¶ | |||
| C | C | |||
| +---- ... --+- ... -+-+-+-+ | +---- ... --+- ... -+-+-+-+ | |||
| | Rule ID | DTag |W|0|1| Encoded Bitmap | | Rule ID | DTag |W|0|1| Encoded Bitmap | |||
| +---- ... --+- ... -+-+-+-+ | +---- ... --+- ... -+-+-+-+ | |||
| next L2 Word boundary ->| | next L2 Word boundary ->| | |||
| (*) = (FCN values indicating the order) | (*) = (FCN values indicating the order) | |||
| Figure 24: Example of the Bitmap in ACK-Always or ACK-on-Error for | Figure 24: Example of the Bitmap in ACK-Always or ACK-on-Error for | |||
| the last window | the last window | |||
| 7.4.4. Abort formats | 8.4.4. Abort formats | |||
| When a SCHC Fragment sender needs to abort the on-going fragmented | When a SCHC Fragment sender needs to abort the on-going fragmented | |||
| SCHC Packet transmission, it sends a Sender-Abort. The Sender-Abort | SCHC Packet transmission, it sends a Sender-Abort. The Sender-Abort | |||
| format (see Figure 25) is a variation of the All-1 fragment, with | format (see Figure 25) is a variation of the All-1 fragment, with | |||
| neither a MIC nor a payload. All-1 fragments contain at least a MIC. | neither a MIC nor a payload. All-1 fragments contain at least a MIC. | |||
| The absence of the MIC indicates a Sender-Abort. | The absence of the MIC indicates a Sender-Abort. | |||
| |--- Sender-Abort Header ---| | |--- Sender-Abort Header ---| | |||
| +--- ... ---+- ... -+-+-...-+~~~~~~~~~~~~~~~~~~~~~ | +--- ... ---+- ... -+-+-...-+~~~~~~~~~~~~~~~~~~~~~ | |||
| | Rule ID | DTag |W| FCN | padding (as needed) | | Rule ID | DTag |W| FCN | padding (as needed) | |||
| skipping to change at page 33, line 50 ¶ | skipping to change at page 34, line 50 ¶ | |||
| | 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 | |||
| Neither the Sender-Abort nor the Receiver-Abort messages are ever | Neither the Sender-Abort nor the Receiver-Abort messages are ever | |||
| acknowledged or retransmitted. | acknowledged or retransmitted. | |||
| Use cases for the Sender-Abort and Receiver-Abort messages are | Use cases for the Sender-Abort and Receiver-Abort messages are | |||
| explained in Section 7.5 or Appendix C. | explained in Section 8.5 or Appendix C. | |||
| 7.5. Baseline mechanism | 8.5. Baseline mechanism | |||
| If after applying SCHC header compression (or when SCHC header | If after applying SCHC header compression (or when SCHC header | |||
| compression is not possible) the SCHC Packet does not fit within the | compression is not possible) the SCHC Packet does not fit within the | |||
| payload of a single L2 data unit, the SCHC Packet SHALL be broken | payload of a single L2 data unit, the SCHC Packet SHALL be broken | |||
| into SCHC Fragments and the fragments SHALL be sent to the fragment | into SCHC Fragments and the fragments SHALL be sent to the fragment | |||
| receiver. The fragment receiver needs to identify all the SCHC | receiver. The fragment receiver needs to identify all the SCHC | |||
| Fragments that belong to a given SCHC Packet. To this end, the | Fragments that belong to a given SCHC Packet. To this end, the | |||
| receiver SHALL use: | receiver SHALL use: | |||
| o The sender's L2 source address (if present), | o The sender's L2 source address (if present), | |||
| skipping to change at page 35, line 29 ¶ | skipping to change at page 36, line 29 ¶ | |||
| There are three reliability modes: No-ACK, ACK-Always and ACK-on- | There are three reliability modes: No-ACK, ACK-Always and ACK-on- | |||
| Error. In ACK-Always and ACK-on-Error, a jumping window protocol | Error. In ACK-Always and ACK-on-Error, a jumping window protocol | |||
| uses two windows alternatively, identified as 0 and 1. A SCHC | uses two windows alternatively, identified as 0 and 1. A SCHC | |||
| Fragment with all FCN bits set to 0 (i.e. an All-0 fragment) | Fragment with all FCN bits set to 0 (i.e. an All-0 fragment) | |||
| indicates that the window is over (i.e. the SCHC Fragment is the last | indicates that the window is over (i.e. the SCHC Fragment is the last | |||
| one of the window) and allows to switch from one window to the next | one of the window) and allows to switch from one window to the next | |||
| one. The All-1 FCN in a SCHC Fragment indicates that it is the last | one. The All-1 FCN in a SCHC Fragment indicates that it is the last | |||
| fragment of the packet being transmitted and therefore there will not | fragment of the packet being transmitted and therefore there will not | |||
| be another window for this packet. | be another window for this packet. | |||
| 7.5.1. No-ACK | 8.5.1. No-ACK | |||
| In the No-ACK mode, there is no feedback communication from the | In the No-ACK mode, there is no feedback communication from the | |||
| fragment receiver. The sender will send all the SCHC fragments of a | fragment receiver. The sender will send all the SCHC fragments of a | |||
| packet without any possibility of knowing if errors or losses have | packet without any possibility of knowing if errors or losses have | |||
| occurred. As, in this mode, there is no need to identify specific | occurred. As, in this mode, there is no need to identify specific | |||
| SCHC Fragments, a one-bit FCN MAY be used. Consequently, the FCN | SCHC Fragments, a one-bit FCN MAY be used. Consequently, the FCN | |||
| All-0 value is used in all SCHC fragments except the last one, which | All-0 value is used in all SCHC fragments except the last one, which | |||
| carries an All-1 FCN and the MIC. The receiver will wait for SCHC | carries an All-1 FCN and the MIC. The receiver will wait for SCHC | |||
| Fragments and will set the Inactivity timer. The receiver will use | Fragments and will set the Inactivity timer. The receiver will use | |||
| the MIC contained in the last SCHC Fragment to check for errors. | the MIC contained in the last SCHC Fragment to check for errors. | |||
| When the Inactivity Timer expires or if the MIC check indicates that | When the Inactivity Timer expires or if the MIC check indicates that | |||
| the reassembled packet does not match the original one, the receiver | the reassembled packet does not match the original one, the receiver | |||
| will release all resources allocated to reassembling this packet. | will release all resources allocated to reassembling this packet. | |||
| The initial value of the Inactivity Timer will be determined based on | The initial value of the Inactivity Timer will be determined based on | |||
| the characteristics of the underlying LPWAN technology and will be | the characteristics of the underlying LPWAN technology and will be | |||
| defined in other documents (e.g. technology-specific profile | defined in other documents (e.g. technology-specific profile | |||
| documents). | documents). | |||
| 7.5.2. ACK-Always | 8.5.2. ACK-Always | |||
| In ACK-Always, the sender transmits SCHC Fragments by using the two- | In ACK-Always, the sender transmits SCHC Fragments by using the two- | |||
| jumping-windows procedure. A delay between each SCHC fragment can be | jumping-windows procedure. A delay between each SCHC fragment can be | |||
| added to respect local regulations or other constraints imposed by | added to respect local regulations or other constraints imposed by | |||
| the applications. Each time a SCHC fragment is sent, the FCN is | the applications. Each time a SCHC fragment is sent, the FCN is | |||
| decreased by one. When the FCN reaches value 0, if there are more | decreased by one. When the FCN reaches value 0, if there are more | |||
| SCHC Fragments remaining to be sent, the sender transmits the last | SCHC Fragments remaining to be sent, the sender transmits the last | |||
| SCHC Fragment of this window using the All-0 fragment format. It | SCHC Fragment of this window using the All-0 fragment format. It | |||
| then starts the Retransmission Timer and waits for a SCHC ACK. | then starts the Retransmission Timer and waits for a SCHC ACK. | |||
| Otherwise, if FCN reaches 0 and the sender transmits the last SCHC | Otherwise, if FCN reaches 0 and the sender transmits the last SCHC | |||
| skipping to change at page 38, line 10 ¶ | skipping to change at page 39, line 10 ¶ | |||
| to the same window. After MAX_ACK_REQUESTS, the receiver will abort | to the same window. After MAX_ACK_REQUESTS, the receiver will abort | |||
| the on-going fragmented SCHC Packet transmission by transmitting a | the on-going fragmented SCHC Packet transmission by transmitting a | |||
| the Receiver-Abort format. The receiver also aborts upon Inactivity | the Receiver-Abort format. The receiver also aborts upon Inactivity | |||
| Timer expiration by sending a Receiver-Abort message. | Timer expiration by sending a Receiver-Abort message. | |||
| If the sender receives a SCK ACK with a Bitmap containing a bit set | If the sender receives a SCK ACK with a Bitmap containing a bit set | |||
| for a SCHC Fragment that it has not sent during the transmission | for a SCHC Fragment that it has not sent during the transmission | |||
| phase of this window, it MUST abort the whole fragmentation and | phase of this window, it MUST abort the whole fragmentation and | |||
| transmission of this SCHC Packet. | transmission of this SCHC Packet. | |||
| 7.5.3. ACK-on-Error | 8.5.3. ACK-on-Error | |||
| The senders behavior for ACK-on-Error and ACK-Always are similar. | The senders behavior for ACK-on-Error and ACK-Always are similar. | |||
| The main difference is that in ACK-on-Error the SCHC ACK with the | The main difference is that in ACK-on-Error the SCHC ACK with the | |||
| encoded Bitmap is not sent at the end of each window but only when at | encoded Bitmap is not sent at the end of each window but only when at | |||
| least one SCHC Fragment of the current window has been lost. Except | least one SCHC Fragment of the current window has been lost. Except | |||
| for the last window where a SCHC ACK MUST be sent to finish the | for the last window where a SCHC ACK MUST be sent to finish the | |||
| 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 | |||
| skipping to change at page 40, line 5 ¶ | skipping to change at page 41, line 5 ¶ | |||
| Fragments, the receiver uses a SCHC ACK with the encoded Bitmap to | Fragments, the receiver uses a SCHC ACK with the encoded Bitmap to | |||
| ask the retransmission of the missing fragments and expect to receive | ask the retransmission of the missing fragments and expect to receive | |||
| SCHC Fragments with the actual window. While waiting the | SCHC Fragments with the actual window. While waiting the | |||
| retransmission an All-0 empty fragment is received, the receiver | retransmission an All-0 empty fragment is received, the receiver | |||
| sends again the SCHC ACK with the encoded Bitmap, if the SCHC | sends again the SCHC ACK with the encoded Bitmap, if the SCHC | |||
| Fragments received belongs to another window or an All-1 fragment is | Fragments received belongs to another window or an All-1 fragment is | |||
| received, the transmission is aborted by sending a Receiver-Abort | received, the transmission is aborted by sending a Receiver-Abort | |||
| fragment. Once it has received all the missing fragments it waits | fragment. Once it has received all the missing fragments it waits | |||
| for the next window fragments. | for the next window fragments. | |||
| 7.6. Supporting multiple window sizes | 8.6. Supporting multiple window sizes | |||
| For ACK-Always or ACK-on-Error, implementers MAY opt to support a | For ACK-Always or ACK-on-Error, implementers MAY opt to support a | |||
| single window size or multiple window sizes. The latter, when | single window size or multiple window sizes. The latter, when | |||
| feasible, may provide performance optimizations. For example, a | feasible, may provide performance optimizations. For example, a | |||
| large window size SHOULD be used for packets that need to be carried | large window size SHOULD be used for packets that need to be carried | |||
| by a large number of SCHC Fragments. However, when the number of | by a large number of SCHC Fragments. However, when the number of | |||
| SCHC Fragments required to carry a packet is low, a smaller window | SCHC Fragments required to carry a packet is low, a smaller window | |||
| size, and thus a shorter Bitmap, MAY be sufficient to provide | size, and thus a shorter Bitmap, MAY be sufficient to provide | |||
| feedback on all SCHC Fragments. If multiple window sizes are | feedback on all SCHC Fragments. If multiple window sizes are | |||
| supported, the Rule ID MAY be used to signal the window size in use | supported, the Rule ID MAY be used to signal the window size in use | |||
| for a specific packet transmission. | for a specific packet transmission. | |||
| Note that the same window size MUST be used for the transmission of | Note that the same window size MUST be used for the transmission of | |||
| all SCHC Fragments that belong to the same SCHC Packet. | all SCHC Fragments that belong to the same SCHC Packet. | |||
| 7.7. Downlink SCHC Fragment transmission | 8.7. Downlink SCHC Fragment transmission | |||
| In some LPWAN technologies, as part of energy-saving techniques, | In some LPWAN technologies, as part of energy-saving techniques, | |||
| downlink transmission is only possible immediately after an uplink | downlink transmission is only possible immediately after an uplink | |||
| transmission. In order to avoid potentially high delay in the | transmission. In order to avoid potentially high delay in the | |||
| downlink transmission of a fragmented SCHC Packet, the SCHC Fragment | downlink transmission of a fragmented SCHC Packet, the SCHC Fragment | |||
| receiver MAY perform an uplink transmission as soon as possible after | receiver MAY perform an uplink transmission as soon as possible after | |||
| reception of a SCHC Fragment that is not the last one. Such uplink | reception of a SCHC Fragment that is not the last one. Such uplink | |||
| transmission MAY be triggered by the L2 (e.g. an L2 ACK sent in | transmission MAY be triggered by the L2 (e.g. an L2 ACK sent in | |||
| response to a SCHC Fragment encapsulated in a L2 frame that requires | response to a SCHC Fragment encapsulated in a L2 frame that requires | |||
| an L2 ACK) or it MAY be triggered from an upper layer. | an L2 ACK) or it MAY be triggered from an upper layer. | |||
| skipping to change at page 41, line 26 ¶ | skipping to change at page 42, line 26 ¶ | |||
| the last window, the transmission of the fragmented SCHC Packet is | the last window, the transmission of the fragmented SCHC Packet is | |||
| considered complete. If the timer expires, and no SCHC ACK has been | considered complete. If the timer expires, and no SCHC ACK has been | |||
| received since the start of the timer, the SCHC Fragment sender | received since the start of the timer, the SCHC Fragment sender | |||
| assumes that the All-1 fragment has been successfully received (and | assumes that the All-1 fragment has been successfully received (and | |||
| possibly, the last SCHC ACK has been lost: this mechanism assumes | possibly, the last SCHC ACK has been lost: this mechanism assumes | |||
| that the retransmission timer for the All-1 fragment is long enough | that the retransmission timer for the All-1 fragment is long enough | |||
| to allow several SCHC ACK retries if the All-1 fragment has not;been | to allow several SCHC ACK retries if the All-1 fragment has not;been | |||
| received by the SCHC Fragment receiver, and it also assumes that it | received by the SCHC Fragment receiver, and it also assumes that it | |||
| is unlikely that several ACKs become all lost). | is unlikely that several ACKs become all lost). | |||
| 8. Padding management | 9. Padding management | |||
| SCHC C/D and SCHC F/R operate on bits, not bytes. SCHC itself does | SCHC C/D and SCHC F/R operate on bits, not bytes. SCHC itself does | |||
| not have any alignment prerequisite. If the Layer 2 below SCHC | not have any alignment prerequisite. If the Layer 2 below SCHC | |||
| constrains the L2 Data Unit to align to some boundary, called L2 | constrains the L2 Data Unit to align to some boundary, called L2 | |||
| Words (for example, bytes), SCHC will meet that constraint and | Words (for example, bytes), SCHC will meet that constraint and | |||
| produce messages with the correct alignement. This may entail adding | produce messages with the correct alignement. This may entail adding | |||
| extra bits (called padding bits). | extra bits (called padding bits). | |||
| When padding occurs, the number of appended bits is strictly less | When padding occurs, the number of appended bits is strictly less | |||
| than the L2 Word size. | than the L2 Word size. | |||
| skipping to change at page 42, line 35 ¶ | skipping to change at page 43, line 35 ¶ | |||
| SENDER RECEIVER | SENDER RECEIVER | |||
| Figure 27: SCHC operations, including padding as needed | Figure 27: SCHC operations, including padding as needed | |||
| Each technology-specific document MUST specify the size of the L2 | Each technology-specific document MUST specify the size of the L2 | |||
| Word. The L2 Word might actually be a single bit, in which case at | Word. The L2 Word might actually be a single bit, in which case at | |||
| most zero bits of padding will be appended to any message, i.e. no | most zero bits of padding will be appended to any message, i.e. no | |||
| padding will take place at all. | padding will take place at all. | |||
| 9. SCHC Compression for IPv6 and UDP headers | 10. SCHC Compression for IPv6 and UDP headers | |||
| This section lists the different IPv6 and UDP header fields and how | This section lists the different IPv6 and UDP header fields and how | |||
| they can be compressed. | they can be compressed. | |||
| 9.1. IPv6 version field | 10.1. IPv6 version field | |||
| This field always holds the same value. Therefore, in the Rule, TV | This field always holds the same value. Therefore, in the Rule, TV | |||
| is set to 6, MO to "equal" and CDA to "not-sent". | is set to 6, MO to "equal" and CDA to "not-sent". | |||
| 9.2. IPv6 Traffic class field | 10.2. IPv6 Traffic class field | |||
| If the DiffServ field does not vary and is known by both sides, the | If the DiffServ field does not vary and is known by both sides, the | |||
| Field Descriptor in the Rule SHOULD contain a TV with this well-known | Field Descriptor in the Rule SHOULD contain a TV with this well-known | |||
| value, an "equal" MO and a "not-sent" CDA. | value, an "equal" MO and a "not-sent" CDA. | |||
| Otherwise, two possibilities can be considered depending on the | Otherwise, two possibilities can be considered depending on the | |||
| variability of the value: | variability of the value: | |||
| 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(y). | CDA to LSB(y). | |||
| 9.3. Flow label field | 10.3. Flow label field | |||
| If the Flow Label field does not vary and is known by both sides, the | If the Flow Label field does not vary and is known by both sides, the | |||
| Field Descriptor in the Rule SHOULD contain a TV with this well-known | Field Descriptor in the Rule SHOULD contain a TV with this well-known | |||
| value, an "equal" MO and a "not-sent" CDA. | value, an "equal" MO and a "not-sent" CDA. | |||
| Otherwise, two possibilities can be considered: | Otherwise, two possibilities can be considered: | |||
| 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(y). | CDA to LSB(y). | |||
| 9.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-IPv6-length". | "compute-IPv6-length". | |||
| If the payload length needs to be sent and does not need to be coded | If the payload length needs to be sent and does not need to be coded | |||
| in 16 bits, the TV can be set to 0x0000, the MO set to MSB(16-s) | in 16 bits, the TV can be set to 0x0000, the MO set to MSB(16-s) | |||
| where 's' is the number of bits to code the maximum length, and CDA | where 's' is the number of bits to code the maximum length, and CDA | |||
| is set to LSB(s). | is set to LSB(s). | |||
| 9.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, | |||
| the Field Descriptor in the Rule SHOULD contain a TV with this Next | the Field Descriptor in the Rule SHOULD contain a TV with this Next | |||
| Header value, the MO SHOULD be "equal" and the CDA SHOULD be "not- | Header value, the MO SHOULD be "equal" and the CDA SHOULD be "not- | |||
| sent". | sent". | |||
| Otherwise, TV is not set in the Field Descriptor, MO is set to | Otherwise, TV is not set in the Field Descriptor, MO is set to | |||
| "ignore" and CDA is set to "value-sent". Alternatively, a matching- | "ignore" and CDA is set to "value-sent". Alternatively, a matching- | |||
| list MAY also be used. | list MAY also be used. | |||
| 9.6. Hop Limit field | 10.6. Hop Limit field | |||
| The field behavior for this field is different for Uplink and | The field behavior for this field is different for Uplink and | |||
| Downlink. In Uplink, since there is no IP forwarding between the Dev | Downlink. In Uplink, since there is no IP forwarding between the Dev | |||
| and the SCHC C/D, the value is relatively constant. On the other | and the SCHC C/D, the value is relatively constant. On the other | |||
| hand, the Downlink value depends of Internet routing and MAY change | hand, the Downlink value depends of Internet routing and MAY change | |||
| more frequently. One neat way of processing this field is to use the | more frequently. One neat way of processing this field is to use the | |||
| Direction Indicator (DI) to distinguish both directions: | Direction Indicator (DI) to distinguish both directions: | |||
| o in the Uplink, elide the field: the TV in the Field Descriptor is | o in the Uplink, elide the field: the TV in the Field Descriptor is | |||
| set to the known constant value, the MO is set to "equal" and the | set to the known constant value, the MO is set to "equal" and the | |||
| CDA is set to "not-sent". | CDA is set to "not-sent". | |||
| o in the Downlink, send the value: TV is not set, MO is set to | o in the Downlink, send the value: TV is not set, MO is set to | |||
| "ignore" and CDA is set to "value-sent". | "ignore" and CDA is set to "value-sent". | |||
| 9.7. IPv6 addresses fields | 10.7. IPv6 addresses fields | |||
| As in 6LoWPAN [RFC4944], IPv6 addresses are split into two 64-bit | As in 6LoWPAN [RFC4944], IPv6 addresses are split into two 64-bit | |||
| long fields; one for the prefix and one for the Interface Identifier | long fields; one for the prefix and one for the Interface Identifier | |||
| (IID). These fields SHOULD be compressed. To allow for a single | (IID). These fields SHOULD be compressed. To allow for a single | |||
| Rule being used for both directions, these values are identified by | Rule being used for both directions, these values are identified by | |||
| their role (DEV or APP) and not by their position in the frame | their role (DEV or APP) and not by their position in the frame | |||
| (source or destination). | (source or destination). | |||
| 9.7.1. IPv6 source and destination prefixes | 10.7.1. IPv6 source and destination prefixes | |||
| Both ends MUST be synchronized with the appropriate prefixes. For a | Both ends MUST be synchronized with the appropriate prefixes. For a | |||
| specific flow, the source and destination prefixes can be unique and | specific flow, the source and destination prefixes can be unique and | |||
| stored in the context. It can be either a link-local prefix or a | stored in the context. It can be either a link-local prefix or a | |||
| global prefix. In that case, the TV for the source and destination | global prefix. In that case, the TV for the source and destination | |||
| prefixes contain the values, the MO is set to "equal" and the CDA is | prefixes contain the values, the MO is set to "equal" and the CDA is | |||
| set to "not-sent". | set to "not-sent". | |||
| If the Rule is intended to compress packets with different prefix | If the Rule is intended to compress packets with different prefix | |||
| values, match-mapping SHOULD be used. The different prefixes are | values, match-mapping SHOULD be used. The different prefixes are | |||
| listed in the TV, the MO is set to "match-mapping" and the CDA is set | listed in the TV, the MO is set to "match-mapping" and the CDA is set | |||
| to "mapping-sent". See Figure 29 | to "mapping-sent". See Figure 29 | |||
| Otherwise, the TV contains the prefix, the MO is set to "equal" and | Otherwise, the TV contains the prefix, the MO is set to "equal" and | |||
| the CDA is set to "value-sent". | the CDA is set to "value-sent". | |||
| 9.7.2. IPv6 source and destination IID | 10.7.2. IPv6 source and destination IID | |||
| If the DEV or APP IID are based on an LPWAN address, then the IID can | If the DEV or APP IID are based on an LPWAN address, then the IID can | |||
| be reconstructed with information coming from the LPWAN header. In | be reconstructed with information coming from the LPWAN header. In | |||
| that case, the TV is not set, the MO is set to "ignore" and the CDA | that case, the TV is not set, the MO is set to "ignore" and the CDA | |||
| is set to "DevIID" or "AppIID". Note that the LPWAN technology | is set to "DevIID" or "AppIID". Note that the LPWAN technology | |||
| generally carries a single identifier corresponding to the DEV. | generally carries a single identifier corresponding to the DEV. | |||
| Therefore AppIID cannot be used. | Therefore AppIID cannot be used. | |||
| For privacy reasons or if the DEV address is changing over time, a | For privacy reasons or if the DEV address is changing over time, a | |||
| static value that is not equal to the DEV address SHOULD be used. In | static value that is not equal to the DEV address SHOULD be used. In | |||
| skipping to change at page 45, line 32 ¶ | skipping to change at page 46, line 32 ¶ | |||
| "mapping-sent". | "mapping-sent". | |||
| It MAY also happen that the IID variability only expresses itself on | It MAY also happen that the IID variability only expresses itself on | |||
| a few bytes. In that case, the TV is set to the stable part of the | a few bytes. In that case, the TV is set to the stable part of the | |||
| IID, the MO is set to "MSB" and the CDA is set to "LSB". | IID, the MO is set to "MSB" and the CDA is set to "LSB". | |||
| Finally, the IID can be sent in extenso on the LPWAN. In that case, | Finally, the IID can be sent in extenso on the LPWAN. In that case, | |||
| the TV is not set, the MO is set to "ignore" and the CDA is set to | the TV is not set, the MO is set to "ignore" and the CDA is set to | |||
| "value-sent". | "value-sent". | |||
| 9.8. IPv6 extensions | 10.8. IPv6 extensions | |||
| No Rule is currently defined that processes IPv6 extensions. If such | No Rule is currently defined that processes IPv6 extensions. If such | |||
| extensions are needed, their compression/decompression Rules can be | extensions are needed, their compression/decompression Rules can be | |||
| based on the MOs and CDAs described above. | based on the MOs and CDAs described above. | |||
| 9.9. UDP source and destination port | 10.9. UDP source and destination port | |||
| To allow for a single Rule being used for both directions, the UDP | To allow for a single Rule being used for both directions, the UDP | |||
| port values are identified by their role (DEV or APP) and not by | port values are identified by their role (DEV or APP) and not by | |||
| their position in the frame (source or destination). The SCHC C/D | their position in the frame (source or destination). The SCHC C/D | |||
| MUST be aware of the traffic direction (Uplink, Downlink) to select | MUST be aware of the traffic direction (Uplink, Downlink) to select | |||
| the appropriate field. The following Rules apply for DEV and APP | the appropriate field. The following Rules apply for DEV and APP | |||
| port numbers. | port numbers. | |||
| If both ends know the port number, it can be elided. The TV contains | If both ends know the port number, it can be elided. The TV contains | |||
| the port number, the MO is set to "equal" and the CDA is set to "not- | the port number, the MO is set to "equal" and the CDA is set to "not- | |||
| skipping to change at page 46, line 16 ¶ | skipping to change at page 47, line 16 ¶ | |||
| of the port number, the MO is set to "MSB" and the CDA is set to | of the port number, the MO is set to "MSB" and the CDA is set to | |||
| "LSB". | "LSB". | |||
| If some well-known values are used, the TV can contain the list of | If some well-known values are used, the TV can contain the list of | |||
| these values, the MO is set to "match-mapping" and the CDA is set to | these values, the MO is set to "match-mapping" and the CDA is set to | |||
| "mapping-sent". | "mapping-sent". | |||
| Otherwise the port numbers are sent over the LPWAN. The TV is not | Otherwise the port numbers are sent over the LPWAN. The TV is not | |||
| set, the MO is set to "ignore" and the CDA is set to "value-sent". | set, the MO is set to "ignore" and the CDA is set to "value-sent". | |||
| 9.10. UDP length field | 10.10. UDP length field | |||
| The UDP length can be computed from the received data. In that case, | The UDP length can be computed from the received data. In that case, | |||
| the TV is not set, the MO is set to "ignore" and the CDA is set to | the TV is not set, the MO is set to "ignore" and the CDA is set to | |||
| "compute-length". | "compute-length". | |||
| If the payload is small, the TV can be set to 0x0000, the MO set to | If the payload is small, the TV can be set to 0x0000, the MO set to | |||
| "MSB" and the CDA to "LSB". | "MSB" and the CDA to "LSB". | |||
| In other cases, the length SHOULD be sent and the CDA is replaced by | In other cases, the length SHOULD be sent and the CDA is replaced by | |||
| "value-sent". | "value-sent". | |||
| 9.11. UDP Checksum field | 10.11. UDP Checksum field | |||
| The UDP checksum operation is mandatory with IPv6 [RFC8200] for most | The UDP checksum operation is mandatory with IPv6 [RFC8200] for most | |||
| packets but recognizes that there are exceptions to that default | packets but recognizes that there are exceptions to that default | |||
| behavior. | behavior. | |||
| For instance, protocols that use UDP as a tunnel encapsulation may | For instance, protocols that use UDP as a tunnel encapsulation may | |||
| enable zero-checksum mode for a specific port (or set of ports) for | enable zero-checksum mode for a specific port (or set of ports) for | |||
| sending and/or receiving. [RFC8200] also stipulates that any node | sending and/or receiving. [RFC8200] also stipulates that any node | |||
| implementing zero-checksum mode must follow the requirements | implementing zero-checksum mode must follow the requirements | |||
| specified in "Applicability Statement for the Use of IPv6 UDP | specified in "Applicability Statement for the Use of IPv6 UDP | |||
| skipping to change at page 47, line 24 ¶ | skipping to change at page 48, line 24 ¶ | |||
| Since the compression happens before the fragmentation, implementors | Since the compression happens before the fragmentation, implementors | |||
| should understand the risks when dealing with unprotected data below | should understand the risks when dealing with unprotected data below | |||
| the transport layer and take special care when manipulating that | the transport layer and take special care when manipulating that | |||
| data. | data. | |||
| In other cases, the checksum SHOULD be explicitly sent. The TV is | In other cases, the checksum SHOULD be explicitly sent. The TV is | |||
| not set, the MO is set to "ignore" and the CDA is set to "value- | not set, the MO is set to "ignore" and the CDA is set to "value- | |||
| sent". | sent". | |||
| 10. Security considerations | 11. IANA Considerations | |||
| 10.1. Security considerations for SCHC Compression/Decompression | This document has no request to IANA. | |||
| 12. Security considerations | ||||
| 12.1. Security considerations for SCHC Compression/Decompression | ||||
| A malicious header compression could cause the reconstruction of a | A malicious header compression could cause the reconstruction of a | |||
| wrong packet that does not match with the original one. Such a | wrong packet that does not match with the original one. Such a | |||
| corruption MAY be detected with end-to-end authentication and | corruption MAY be detected with end-to-end authentication and | |||
| integrity mechanisms. Header Compression does not add more security | integrity mechanisms. Header Compression does not add more security | |||
| problem than what is already needed in a transmission. For instance, | problem than what is already needed in a transmission. For instance, | |||
| to avoid an attack, never re-construct a packet bigger than some | to avoid an attack, never re-construct a packet bigger than some | |||
| configured size (with 1500 bytes as generic default). | configured size (with 1500 bytes as generic default). | |||
| 10.2. Security considerations for SCHC Fragmentation/Reassembly | 12.2. Security considerations for SCHC Fragmentation/Reassembly | |||
| This subsection describes potential attacks to LPWAN SCHC F/R and | This subsection describes potential attacks to LPWAN SCHC F/R and | |||
| suggests possible countermeasures. | suggests possible countermeasures. | |||
| A node can perform a buffer reservation attack by sending a first | A node can perform a buffer reservation attack by sending a first | |||
| SCHC Fragment to a target. Then, the receiver will reserve buffer | SCHC Fragment to a target. Then, the receiver will reserve buffer | |||
| space for the IPv6 packet. Other incoming fragmented SCHC Packets | space for the IPv6 packet. Other incoming fragmented SCHC Packets | |||
| will be dropped while the reassembly buffer is occupied during the | will be dropped while the reassembly buffer is occupied during the | |||
| reassembly timeout. Once that timeout expires, the attacker can | reassembly timeout. Once that timeout expires, the attacker can | |||
| repeat the same procedure, and iterate, thus creating a denial of | repeat the same procedure, and iterate, thus creating a denial of | |||
| skipping to change at page 48, line 40 ¶ | skipping to change at page 49, line 44 ¶ | |||
| consumption of the SCHC Fragment sender's resources. To this end, | consumption of the SCHC Fragment sender's resources. To this end, | |||
| the malicious node MAY repeatedly send a fake ACK to the SCHC | the malicious node MAY repeatedly send a fake ACK to the SCHC | |||
| Fragment sender, with a Bitmap that reports that one or more SCHC | Fragment sender, with a Bitmap that reports that one or more SCHC | |||
| Fragments have been lost. In order to mitigate this possible attack, | Fragments have been lost. In order to mitigate this possible attack, | |||
| MAX_ACK_RETRIES MAY be set to a safe value which allows to limit the | MAX_ACK_RETRIES MAY be set to a safe value which allows to limit the | |||
| maximum damage of the attack to an acceptable extent. However, note | maximum damage of the attack to an acceptable extent. However, note | |||
| that a high setting for MAX_ACK_RETRIES benefits SCHC Fragment | that a high setting for MAX_ACK_RETRIES benefits SCHC Fragment | |||
| reliability modes, therefore the trade-off needs to be carefully | reliability modes, therefore the trade-off needs to be carefully | |||
| considered. | considered. | |||
| 11. Acknowledgements | 13. Acknowledgements | |||
| Thanks to Carsten Bormann, Philippe Clavier, Eduardo Ingles Sanchez, | Thanks to Carsten Bormann, Philippe Clavier, Eduardo Ingles Sanchez, | |||
| Arunprabhu Kandasamy, Rahul Jadhav, Sergio Lopez Bernal, Antony | Arunprabhu Kandasamy, Rahul Jadhav, Sergio Lopez Bernal, Antony | |||
| Markovski, Alexander Pelov, Pascal Thubert, Juan Carlos Zuniga, Diego | Markovski, Alexander Pelov, Pascal Thubert, Juan Carlos Zuniga, Diego | |||
| Dujovne, Edgar Ramos, and Shoichi Sakane for useful design | Dujovne, Edgar Ramos, and Shoichi Sakane for useful design | |||
| consideration and comments. | consideration and comments. | |||
| 12. References | 14. References | |||
| 12.1. Normative References | 14.1. Normative References | |||
| [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, | Requirement Levels", BCP 14, RFC 2119, | |||
| December 1998, <https://www.rfc-editor.org/info/rfc2460>. | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | ||||
| [RFC7217] Gont, F., "A Method for Generating Semantically Opaque | ||||
| Interface Identifiers with IPv6 Stateless Address | ||||
| Autoconfiguration (SLAAC)", RFC 7217, | ||||
| DOI 10.17487/RFC7217, April 2014, | ||||
| <https://www.rfc-editor.org/info/rfc7217>. | ||||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
| 14.2. Informative References | ||||
| [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>. | |||
| [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>. | |||
| [RFC6282] Hui, J., Ed. and P. Thubert, "Compression Format for IPv6 | ||||
| Datagrams over IEEE 802.15.4-Based Networks", RFC 6282, | ||||
| DOI 10.17487/RFC6282, September 2011, | ||||
| <https://www.rfc-editor.org/info/rfc6282>. | ||||
| [RFC6936] Fairhurst, G. and M. Westerlund, "Applicability Statement | [RFC6936] Fairhurst, G. and M. Westerlund, "Applicability Statement | |||
| for the Use of IPv6 UDP Datagrams with Zero Checksums", | for the Use of IPv6 UDP Datagrams with Zero Checksums", | |||
| RFC 6936, DOI 10.17487/RFC6936, April 2013, | RFC 6936, DOI 10.17487/RFC6936, April 2013, | |||
| <https://www.rfc-editor.org/info/rfc6936>. | <https://www.rfc-editor.org/info/rfc6936>. | |||
| [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>. | |||
| [RFC7217] Gont, F., "A Method for Generating Semantically Opaque | ||||
| Interface Identifiers with IPv6 Stateless Address | ||||
| Autoconfiguration (SLAAC)", RFC 7217, | ||||
| DOI 10.17487/RFC7217, April 2014, | ||||
| <https://www.rfc-editor.org/info/rfc7217>. | ||||
| [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
| (IPv6) Specification", STD 86, RFC 8200, | (IPv6) Specification", STD 86, RFC 8200, | |||
| DOI 10.17487/RFC8200, July 2017, | DOI 10.17487/RFC8200, July 2017, | |||
| <https://www.rfc-editor.org/info/rfc8200>. | <https://www.rfc-editor.org/info/rfc8200>. | |||
| 12.2. Informative References | ||||
| [RFC6282] Hui, J., Ed. and P. Thubert, "Compression Format for IPv6 | ||||
| Datagrams over IEEE 802.15.4-Based Networks", RFC 6282, | ||||
| DOI 10.17487/RFC6282, September 2011, | ||||
| <https://www.rfc-editor.org/info/rfc6282>. | ||||
| [RFC8376] Farrell, S., Ed., "Low-Power Wide Area Network (LPWAN) | [RFC8376] Farrell, S., Ed., "Low-Power Wide Area Network (LPWAN) | |||
| Overview", RFC 8376, DOI 10.17487/RFC8376, May 2018, | Overview", RFC 8376, DOI 10.17487/RFC8376, May 2018, | |||
| <https://www.rfc-editor.org/info/rfc8376>. | <https://www.rfc-editor.org/info/rfc8376>. | |||
| Appendix A. SCHC Compression Examples | Appendix A. SCHC Compression Examples | |||
| This section gives some scenarios of the compression mechanism for | This section gives some scenarios of the compression mechanism for | |||
| IPv6/UDP. The goal is to illustrate the behavior of SCHC. | IPv6/UDP. The goal is to illustrate the behavior of SCHC. | |||
| The most common case using the mechanisms defined in this document | The most common case using the mechanisms defined in this document | |||
| End of changes. 92 change blocks. | ||||
| 165 lines changed or deleted | 184 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/ | ||||