LPWAN Static Context Header Compression (SCHC) for ICMPv6
Universidad Diego Portales
Escuela de Informatica y Telecomunicaciones
Av. Ejercito 441
Santiago
Region Metropolitana
Chile
+56 (97) 697-6404
tomas.lagos@mail.udp.cl
Universidad Diego Portales
Escuela de Informatica y Telecomunicaciones
Av. Ejercito 441
Santiago
Region Metropolitana
Chile
+56 (2) 676-8121
diego.dujovne@mail.udp.cl
Internet Area
LPWAN
Draft
This document provides the implementation of the LPWAN static context header compression (SCHC) for the Internet Control Message Protocol version 6 (ICMPv6) on networks with star topology. SCHC is a header compression technique which uses RoHC concepts and the flexibility of 6LoWPAN to avoid fields that are known by all network devices and compress the remaining header fields. The ICMPv6 messages considered in this draft are Echo Request, Echo Reply and Neighbor Discovery.
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 RFC 2119.
LPWANs are networks where low power consumption, high delay and extremely small packets characterize the traffic. The nodes are tipically connected in a star topology, with a central gateway that connects the network to the Internet. Most IP-based networks require ICMP services to enable network configuration and testing, such as neighbor node detection and round trip time calculation. Because ICMPv6 has redundant information in header fields, SCHC can be deployed efficiently, especially for LPWA devices that are constrained by a small available bandwidth and power limitations.
This document describes ICMPv6 message compression using SCHC compression defined on to reduce to the minimum the required LPWAN packet size. In order to achieve this goal, we also reuse the Rule ID field by redefining the bit usage without loss in compatibility.
The SCHC rule is set up with one 1 Byte where the 8 bits will be referenced by the letters A B C D E F G H.
FieldbitsValues
A 1 0: If the Next Header field is ICMPv6, 1: If Next Header field is UDP
B 1 0: If the source address is link-local, 1: If the source address is Global
C 1 reserved
If the A field is ICMPv6, DEFGH will be set with the following configuration:
FieldbitsValues
DEF:G 4 000:0: If it is Echo Request
001:0: If it is Echo Reply
010:0: If it is Router Solicitation
011:0: If it is Router Advertisement
100:B: If it is Neighbor Solicitation; B = 0 If target address is link-local, B = 1 If Target Address is Global
101:B: If it is Neighbor Advertisement; B = 0 If target address is link-local, B = 1 If Target Address is Global
110:0 If it is Redirect
H 1 0: A single packet is sent, 1: after the packet, the following packet is piggybacked to reduce transmission delay
Echo Request and Echo Reply are composed by the same fields:
Type: Message type. In case it is Echo Request the value will be 0x80. If it is Echo Reply will be 0x81.
Code: Always 0.
Checksum: This field is composed by 2 Bytes where the values are calculated as defined on RFC 4443.
Identifier: It is the ID of the package.
Sequence: It is the sequence number of the transmitted packet.
For a SCHC compression it is necessary to identify which fields stay static to build the context.
The fields Code and checksum can be elided because Code is always zero and Checksum can be calculated after the decompression of the packet. In the case of Type, this field can be represented in the SCHC rule. The Identifier and Sequence fields will be sent after the SCHC rule.
FieldFPDIMatch Opera.Comp Decomp ActionSent [bits]
Type 1 Bi equal not sent
Code 1 Bi equal not sent
Checksum 1 Bi ignore compute-checksum
Identifier 1 Bi equal sent [16]
Sequence 1 Bi ignore sent [16]
The Router Solicitation packet header is composed by:
Type: Type of message. Value: 0x85.
Code: Always 0.
Checksum: This field is composed by 2 Bytes where the values are caculated as defined on RFC 4443
Reserved: These 4 bytes have a 0 value.
Option: This field corresponds to the MAC address.
The most significant field is the MAC address of the network host. As mentioned on RFC 4861, Router Solicitation should have a Link-Local Source Address and a Router Multicast Address which can be integrated after the packet decompression.
FieldFPDIMatch Opera.Comp Decomp ActionSent [bits]
Type 1 Bi equal not sent
Code 1 Bi equal not sent
Checksum 1 Bi ignore compute-checksum
Reserved 1 Bi equal not sent
Option - type 1 Bi equal not sent
Option - length 1 Bi ignore compute-length
Option - link-layer 1 Bi ignore sent [36]
The Router Advertisement packet header is composed by:
Type: Type of message. Value: 0x86.
Code: Always 0.
Checksum: This field is composed by 2 Bytes where they values are caculated as it is explained on RFC 4443.
Current Hop Limit: Because this is a star topology, the value MUST be set to 255.
Autoconfig Flags: Depending on the router configuration, it will advertise if DHCP is allowed or not.
Router Lifetime: This field indicates the time that the Router keeps the condition of default device.
Reachable Time: Indicates to the host how much time a neighbour is considered reachable.
Retransmission Timer: Indicates the delay that the host should have before transmission.
Options: This field contains the MAC Address, MTU and the IPv6 Prefix of the network.
The SCHC compression for Router Advertisement is designed to send the MAC address of the packet. Like the Echo message, the Type field can be represented in the SCHC rule.
The Current Hop Limit, Autoconfig Flags, Lifetime Router, Reachable Time, and Retransmission Timer fields can be deleted if the host knows these values. The MTU of this packet can be elided and the IPv6 prefix helps the SCHC compression of the global address, omitting the first 8 bytes of the address.
FieldFPDIMatch Opera.Comp Decomp ActionSent [bits]
Type 1 Bi equal not sent
Code 1 Bi equal not sent
Checksum 1 Bi ignore compute-checksum
Current Hop Limit 1 Bi ignore not sent
Autoconfig Flags 1 Bi ignore not sent
Router Lifetime 1 Bi ignore not sent
Reachable Time 1 Bi ignore not sent
Retransmission Timer 1 Bi ignore not sent
Option - type 1 Bi equal not sent
Option - length 1 Bi ignore compute-length
Option - link-layer 1 Bi ignore sent [36]
Option - type 1 Bi equal not sent
Option - length 1 Bi ignore not sent
Option - reserved 1 Bi equal not sent
Option - MTU 1 Bi ignore not sent
Option - type 1 Bi equal not sent
Option - length 1 Bi equal not sent
Option - Flag 1 Bi ignore not sent
Option - Valid lifetime 1 Bi ignore not sent
Option - Preferred lifetime 1 Bi ignore not sent
Option - reserved 1 Bi equal not sent
Option - prefix 1 Bi ignore not sent
The Neighbor Solicitation packet header is composed by:
Type: Type of message. Value: 0x87.
Code: Always 0.
Checksum: This field is composed by 2 Bytes where the values are caculated as it is specified on RFC 4443.
Target Address: It contains the address to be resolved.
Options: This field contains the MAC Address from the host.
For SCHC compression over Neighbor Solicitation, the MAC address and the Target Address are the minimal fields for the transmision. If the Target address has a Link-Local value, the last 8 Bytes of the address are sent, otherwise, the full 16 Bytes are sent. The type field can be represented in the SCHC rule.
FieldFPDIMatch Opera.Comp Decomp ActionSent [bits]
Type 1 Bi equal not sent
Code 1 Bi equal not sent
Checksum 1 Bi ignore compute-checksum
Target Address 1 Bi match- mapping sent link-local [64] global [128]
Option - type 1 Bi equal not sent
Option - length 1 Bi ignore compute-length
Option - link-layer 1 Bi ignore sent [36]
A Neighbor Advertisement is composed by:
Type: Type of message. Value: 0x88.
Code: Is always 0.
Checksum: This field is composed by 2 Bytes where the values are caculated as it is specified on RFC 4443.
Flags: Describes first if the device sending the packet is a router or a node, second if the packet is sent because it is a neighbor search response and third, if the receiver has to rewrite the host information.
Target Address: If it is a reply of a Neighbor Solicitation request, it contains the same Target address, otherwise it will contain the address to be resolved.
Options: If the packet source is a Multicast Neighbor Solicitation reply, the MAC is sent, otherwise it is elided.
For the compression of SCHC in Neighbor Advertisement, the MAC address is sent if it is a Multicast neighborhood request response. If the Target address has a Link-Local value, the last 8 Bytes of the address will be sent, otherwise, the full 16 Bytes will be transmitted. If the Flags field is known by the host, it can be deleted. The Type field can be represented in the SCHC rule.
FieldFPDIMatch Opera.Comp Decomp ActionSent [bits]
Type 1 Bi equal not sent
Code 1 Bi equal not sent
Checksum 1 Bi ignore compute-checksum
Flags 1 Bi equal not sent
Target Address 1 Bi match- mapping sent link-local [64] global [128]
Option - type 1 Bi equal not sent
Option - length 1 Bi ignore not sent
Option - link-layer 1 Bi ignore not sent
This work is partially supported by 16STIC-08 STIC-AmSud PEACH Research Project. We would also like to thank the Red Snapper project for their support.