\chapter{Introduction}

In recent years, \acp{WSN} have been widely adopted as a means for applications
such as industrial monitoring \cite{ding2010sensing} \cite{rfc5673}, wild-life
tracking \cite{cassens2017automated} and public infrastructure \cite{rfc5867}.
One significant trend is the rise of networked embedded devices that contain
sensors and actors for performing dedicated tasks, which is often referred to as
the \acf{IoT}.

Many of these applications have in common that they need some means of
transporting commands to these embedded devices and in turn receive sensor data
from the devices. The way such a transport channel is achieved is often through
creating a wireless mesh network, since deployment is comparatively convenient
and cost efficient compared to wired networks. At the same time, such devices
will often be battery powered, since at the deployment side a connection to the
power grid might not be available with reasonable effort. In total, these
restrictions lead to different constraints on the software that creates the mesh
routing.

When nodes are supplied by a battery, the maintenance interval of the node
itself depends on how efficiently the node manages its limited amount of energy.
In extreme cases (e.g. where the sink depletes its battery first) the total
lifetime of the network may even depend on the minimum lifetime of any node in
the network. For routing in \ac{WSN} the amount of energy it takes to establish
a routing topology within the network of devices is largely due to the time the
radio is powered for transmitting messages, which is proportional to the number
and sizes of messages that need to be exchanged to create and maintain the
routing topology. The amount of energy used also depends on the efficiency of
the resulting routing topology when transmitting messages through the network.
There is often a trade-off between the energy consumption of a network and the
performance in terms of network latency and throughput. For this, different
metrics can be applied and have to be carefully selected based on the conditions
the network operates in.

A problem that often occurs, especially in harsh environmental conditions (e.g.
outdoor deployments, wildlife monitoring) or with faulty software, is from
single or repeated node restarts. When a node resets, it has to reconfigure its
routing information by exchanging message with surrounding nodes, which makes up
a great part of the energy costs associated with \ac{WSN}. Such restarts do not
only affect the specific resetting node, but also nodes that depend on the
resetting node inside the routing topology. Previous work has shown that this
behavior of transitively failing nodes can have a large impact on the energy
efficiency of \acp{WSN} using \ac{RPL} \cite{kulau2017energy},
\cite{mueller2017}.

The \ac{RPL} is a protocol for routing messages in wireless mesh networks
and has explicitly been designed for use with networks of nodes with low power
consumption and lossy wireless links, as is typical for many deployment
scenarios. It has become the de-facto standard routing protocol for wireless
sensor networks and, as such, its behavior in conditions where transient node
failures occur is of great interest to this work.

One aspect of the effectiveness of a mesh routing protocol is how it deals with
such transient node failures. It has to quickly detect these failures, decide
how to invalidate the routes using the failed node and create and announce
alternative routes in the network.

In subsequent work \cite{mueller2017}, a hardened implementation of \ac{RPL} for
the \emph{Contiki} operating system has been developed, that managed to reduce
the influence of node restarts, by restoring a previous state that has been
stored in the flash memory of the node. This hardened implementation has
previously been evaluated both using simulations and within a limited test
network.

The \fitlab is a shared \ac{IoT} test network that features over 2000 nodes and
provides an interface for the remote configuration and scheduling of
experiments. Measurement data can be obtained for a variety of variables including
\ac{RSSI}, \acp{PCAP}, serial interface output, and event logs for each node.
The goal of this work is to further verify the findings concerning the effect of
node restarts on the performance of \ac{RPL} and to evaluate the effectiveness
of the hardened implementation for reducing the energy impact of transient node
failures on a larger scale. In addition to the parameters needed for the
verification of previous work \cite{mueller2017}, some further variables have
been recorded (see \autoref{tab:params}) and evaluated that allow some
conclusion about the performance \ac{RPL}.

In \autoref{chap:relwork} an introduction to the mechanisms of \ac{RPL} is given
and other work discussing the protocol performance of \ac{RPL} is presented
including an analysis of the effect of transient node failures in \ac{WSN}. From
the literature, different attempts for hardening \ac{RPL} against various forms
of attacks on the protocol and other extensions that aim to add security and
better performance are presented.

The topology of test network and the hardware used for the sensor nodes is
descibed in \autoref{chap:hardware}, while in \autoref{chap:setup} the different
software components are further described including how the data for the
individual variables is recorded, aggregated and analyzed.

In \autoref{chap:evaluation} a description of the different configurations the
experiments were run in, how parameters were controlled is given for and the
analysis of the network topology, network performance and energy consumption is
are presented.