# On Applicability of Network Coding Technique for 6 LoWPAN-based Sensor Networks
## 3 Network Coding for 6 LoWPAN-Based Wireless Sensor Networks
### Network Coding for 6 LoWPAN (NC6 LoWPAN) WSNs  
As has already been mentioned, the main goal of the NC6 LoWPAN implementation in 6 LoWPAN-based WSNs is to decrease the overall network load, even if the network is not overloaded, which is what leads to saving the energy consumed by sensor modes. The following three basic assumptions were taken by the authors of this paper:  
1. NC6 LoWPAN should be applied for unicast transmission. Most of the sensor networks are deployed to transfer unicast streams from end sensors to a border gateway (and further to the Internet or cloud) or/and from the decision center to the actuators (associated with the sensor modes). 2. This technique should be easily implemented in sensor motes, possibly without any modifications in the MAC layer drivers. 3. It should be optimized to minimize node's resources utilization, i.e., it should be equipped with the operations tailored for sensor network to minimize node's memory usage, minimize additional signaling required for encoded packets acknowledgments, and decrease the overall traffic in the WSN (what should lead to the energy consumption decrease). In the NC6 LoWPAN, the encoding and decoding operations are performed in the NC layer at the bottom of the 6 LoWPAN layer, as it is shown in Figure 2. Such location of the NC entity avoids the modification of the MAC driver software, but it requires 6 LoWAPN packets buffering in the NC layer, in order to ensure coding opportunity. Most of the NC techniques proposed in the literature (i.e., in [13]) assume that the native packets are not delayed for performing coding operation, but only buffered waiting for wireless medium access. Such assumption practically limits the network coding utilization to highly loaded or congested nodes. Thus, some authors proposed (for example, in [27; 38]) to intentionally delay the packets in intermediate nodes of the IEEE 802.11-based network, allowing for increasing the coding opportunity. This idea is also used in the NC6 LoWPAN, since the sensor network's traffic can often be at low level, what could limit the coding efficiency. Appling additional packet delays, we should remember that it can influence the upper layer protocols (i.e., Transmission Control Protocol), which are packet delay and packet reordering sensitive. The NC6 LoWPAN was assumed to be used with the User Datagram Protocol (UDP) units. This assumption seems to be reasonable for WSNs, since more services that were handled in the WSN are based on UDP transmissions. Besides, the communication techniques dedicated for wideband wireless networks allow for collecting all overheard packets and then use them during encoding and decoding operations. In addition, [PERSON] et al., as showed in [13] that many network coding implementations work well in IEEE 802.11-based networks, where the node's memory resources are not significantly restricted, while the 6 LoWPAN-based WSNs are mainly composed of nodes with many specific functions and limitations. One of the restrictions of the NC application in such networks is the IPv6 headers compression, where some of the header fields can be changed from hop-to-hop. Additionally, we cannot occupy too much memory for NC buffers since the 6 LoWPAN allows for packets' fragmentation, which is what requires that nodes have to reserve the memory for merging fragments. Otherwise, the native datagrams (fragments) will be lost. All of these problems need some effort, mainly by the reduction of the NC signaling overhead, reduction of the coding/decoding range (one-hop), excluding the broadcast and multicast transmissions from coding operations, and other described in this paper. In order to increase the coding opportunity in softly loaded WSNs, the native packets have to be buffered and slightly delayed in some nodes. What is more, the NC6 LoWPAN does not collect all of the overheard packets, because of the sensors' memory limitations.