# 6LoWPAN

6LoWPAN (acronym of "IPv6 over Low-Power Wireless Personal Area Networks") was a working group of the Internet Engineering Task Force (IETF). It was created with the intention of applying the Internet Protocol (IP) even to the smallest devices, enabling low-power devices with limited processing capabilities to participate in the Internet of Things.
The 6LoWPAN group defined encapsulation, header compression, neighbor discovery and other mechanisms that allow IPv6 to operate over IEEE 802.15.4 based networks. Although IPv4 and IPv6 protocols do not generally care about the physical and MAC layers they operate over, the low-power devices and small packet size defined by IEEE 802.15.4 make it desirable to adapt to these layers.
The base specification developed by the 6LoWPAN IETF group is RFC 4944 (updated by RFC 6282 with header compression, RFC 6775 with neighbor discovery optimization, RFC 8931 with selective fragment recovery and with smaller changes in RFC 8025 and RFC 8066). The problem statement document is RFC 4919. IPv6 over Bluetooth Low Energy using 6LoWPAN techniques is described in RFC 7668.

## Application areas

The targets for IPv6 networking for low-power radio communication are devices that need wireless connectivity to many other devices at lower data rates for devices with very limited power consumption. The header compression mechanisms in RFC 6282 are used to allow IPv6 packets to travel over such networks.
IPv6 is also in use on the smart grid enabling smart meters and other devices to build a micro mesh network before sending the data back to the billing system using the IPv6 backbone. Some of these networks run over IEEE 802.15.4 radios, and therefore use the header compression and fragmentation as specified by RFC6282.

### Thread

Thread is a standard from a group of more than fifty companies for a protocol running over 6LoWPAN to enable home automation. The specification is available at no cost as of 24 June 2022, but paid membership is required to implement the protocol. Version 1.0 of the specification was published on 2015-10-29. The protocol most directly competes with Z-Wave and Zigbee IP. In IoT device communications using the Matter standard, Thread is one of two possible wireless transport layers.

## Functions

As with all link-layer mappings of IP, RFC4944 provides a number of functions. Beyond the usual differences between L2 and L3 networks, mapping from the IPv6 network to the IEEE 802.15.4 network poses additional design challenges (see RFC 4919 for an overview).

### Adapting the packet sizes of the two networks

IPv6 requires the link maximum transmission unit (MTU) to be at least 1280 octets. In contrast, IEEE 802.15.4's standard frame size is 127 octets. A maximum frame overhead of 25 octets and an optional but highly recommended security feature at the link layer poses an additional overhead of up to 21 octets are for AES-CCM-128. This leaves only 81 octets for the upper layers. Since this is so much less than 1280, 6LowPAN defines a fragmentation and reassembly layer. Further, the standard IPv6 Header is 40 octets long, so header compression is defined as well.

### Address resolution

IPv6 nodes are assigned 128 bit IP addresses in a hierarchical manner, through an arbitrary length network prefix. IEEE 802.15.4 devices may use either of IEEE 64 bit extended addresses or, after an association event, 16 bit addresses that are unique within a PAN. There is also a PAN-ID for a group of physically collocated IEEE 802.15.4 devices.

### Differing device designs

IEEE 802.15.4 devices are intentionally constrained in form factor to reduce costs (allowing for large-scale network of many devices), reduce power consumption (allowing battery powered devices) and allow flexibility of installation (e.g. small devices for body-worn networks). On the other hand, wired nodes in the IP domain are not constrained in this way; they can be larger and make use of mains power supplies.

### Differing focus on parameter optimization

IPv6 nodes are geared towards attaining high speeds. Algorithms and protocols implemented at the higher layers such as TCP kernel of the TCP/IP are optimized to handle typical network problems such as congestion. In IEEE 802.15.4-compliant devices, energy conservation and code-size optimization remain at the top of the agenda.

### Adaptation layer for interoperability and packet formats

An adaptation mechanism to allow interoperability between IPv6 domain and the IEEE 802.15.4 can best be viewed as a layer problem. Identifying the functionality of this layer and defining newer packet formats, if needed, is an enticing research area. RFC 4944 proposes an adaptation layer to allow the transmission of IPv6 datagrams over IEEE 802.15.4 networks.

### Addressing management mechanisms

The management of addresses for devices that communicate across the two dissimilar domains of IPv6 and IEEE 802.15.4 is cumbersome, if not exhaustingly complex.

### Routing considerations and protocols for mesh topologies in 6LoWPAN

Routing per se is a two phased problem that is being considered for low-power IP networking:
* Mesh routing in the personal area network (PAN) space.
* The routability of packets between the IPv6 domain and the PAN domain.
Several routing protocols have been proposed by the 6LoWPAN community such as LOAD, DYMO-LOW, HI-LOW. However, only two routing protocols are currently legitimate for large-scale deployments: LOADng standardized by the ITU under the recommendation ITU-T G.9903 and RPL standardized by the IETF ROLL working group.

### Device and service discovery

Since IP-enabled devices may require the formation of ad hoc networks, the current state of neighboring devices and the services hosted by such devices will need to be known. IPv6 neighbour discovery extensions is an internet draft proposed as a contribution in this area.

### Security

IEEE 802.15.4 nodes can operate in either secure mode or non-secure mode. Two security modes are defined in the specification in order to achieve different security objectives: Access Control List (ACL) and Secure mode