\acresetall
\chapter{Conclusion}

% - evaluate effect of transient node resets + hardened implementation
% - create tools for setting up + measuring + analysing experiments
% - \fitlab 
% - stable topology
%   --> comparable
% - transient node resets are a thing
%   - if reset: changes ++
%   - less with hardening
%    - if no reset: less good --> depends on use-case
% - convergence time
%    - restoring state takes time
%    - restoring wrong state even more --> validation helps
% - performance: delay, packet loss
%   - hardened implementation loses fewer packets when used without restore UID
%   - but both worse without single node reset

The topic of this work has been to evaluate the reset of single node restarts
and the possibly resulting transient node failures on a \ac{WSN} which uses
the \ac{RPL}. The evaluation has been performed using \fitlab. For this software has
been created to automate the experiments using the existing infrastructure
provided by \fitlab and analyze the data obtained from the experiments. For
running the hardened implementation in \fitlab, the implementation has been
ported to a newer version of \emph{Contiki} that has device support for the
sensor nodes.

Each experiment has been performed in six different phases, where the first two
(N and R) use the default implementation of \ac{RPL} in \emph{Contiki}, the
second pair (H and HR) uses the hardened implementation \cite{mueller2017} and
the third pair (HS and HSR) uses the hardened implementation that also checks
the validity of the restored routing information.

First, the \ac{DAG} that results from each experiment has been compared and
checked for variances. It has been discovered that, using \fitlab it is possible
to reliably create a tree where a certain node (e.g. the node to be
reset during R, HR and HSR) joins the \ac{DAG} at a certain rank. This means
that comparable results can be obtained for the effect of single node resets.

Next, the instability of the \ac{DAG} has been evaluated by counting the number
of changes that occur during each phase. It has been observed that a single reset
will trigger a large amount of changes in the \ac{DAG}, which will result in a
higher energy consumption. If such resets occur, both versions of the hardened
implementations will reduce the  number of changes to the
\ac{DAG}, but will increase the number of changes if no resets occur, in which
case the default implementation performs better.

From observing the network convergence times for \ac{RPL} for each
implementation with and without single node resets, it can be concluded that
restoring the state takes time, during which arriving packets will be lost. The
hardened implementation, but without the validity checks enabled, performs best in
reducing the time packets are dropped while the node recovers from its reset. It
has been discovered that the validity checks that involve the exchange of
\ac{DIO} messages take longer than recreating the state without restoring it
from persistent memory.

The final part of the evaluation looked at the message overhead generated by
each implementation and for a network with and without single node resets. Here
it has been observed, that the default implementation creates the lowest
overhead for a scenario without single node resets, while the hardened
implementations create a large overhead if no single node reset occurs. For a
scenario where single node resets occur, both of the hardened implementations
manage to achieve a smaller message overhead than the default implementation.

In general, it can be concluded that the energy consumption of the hardened
implementation is significantly higher than for the default implementation if no
single node resets occur. If single node resets occur, the hardened
implementation will only have a small advantage over the default implementation
in terms of energy consumption.