This directory contains the device applications, scripts, plots, and data aggregates used for Section 5 Comparison of Low-power DNS Transports and Section 6 Evaluation of Caching for DoC of the paper.
There are three main experiment types that can be conducted and evaluated with the artifacts in this directory. Note that this does not include the build and packet size plots.
A simple set-up with a single DoC client separated by a single hop to the border router. We used this experiment types primarily to validate our implementation.
The experiment type we used for our evaluation in Section 5 Comparison of Low-power Transports, i.e., at least 2 DoC client that query 50 records from a DoC server via a forwarder/forward proxy and border router without any caching. There are 4 subtypes of this experiment type:
comp
: The base setup from our paper with 2 DoC clients. This is the subtype presented in the paper and depicted in the figure above.comp_8
: A setup with 6 DoC clients (to a total of 8 nodes with forwarder/proxy and border router).comp_24
: A setup with 22 DoC clients (to a total of 24 nodes with forwarder/proxy and border router).
The experiment type we used for our evaluation in Section 6 Evaluation of Caching for DoC, i.e., at least 2 DoC client that query 50 records for 8 distinct names from a DoC server via a forwarder/forward proxy and border router with different caching scenarios. There are 4 subtypes of this experiment type:
max_age
: The base setup from our paper with 2 DoC clients. This is the subtype presented in the paper and depicted in the figure above.max_age_8
: A setup with 6 DoC clients (to a total of 8 nodes with forwarder/proxy and border router).max_age_24
: A setup with 22 DoC clients (to a total of 24 nodes with forwarder/proxy and border router).
A Git submodule import of RIOT 2022.07 with the necessary Pull Requests and patches applied on
top. Namely, this includes the patches in ./riot-patches
and the following Pull
Requests:
Git patches to RIOT required for the experiments that did not result in an upstream Pull Request.
A script that can be used to reproduce the state of ./RIOT
. It fetches RIOT 2022.07
from the main RIOT GitHub repo, resets the submodule to that release and then cherry-picks the Pull Request first and then applies the patches from
./riot-patches
to it.
A Git submodule import of libOSCORE.
A Git submodule import of the Quant QUIC network stack.
Git patches to Quant to make its riot/
application compilable for RIOT 2022.07.
Contains the dedicated RIOT applications used for our experiments:
./apps/requester
is the DNS client application used for all our experiments../apps/proxy
is the opaque forwarder and forward proxy application used for the [comp
andmax_age
experiments][experiment types]
We also used the border router example from the ./RIOT
submodule as the
border router.
Contains the scripts to conduct and evaluate the experiments:
./scripts/exp_ctrl
contains scripts for conducting the experiments../scripts/plots
contains scripts to parse the output of theexp_ctrl
scripts and generate plots from them.
Contains the outputs of the scripts in ./scripts
. Results not taken into account for
our paper are listed in subdirectories <discard ISO date>-<reason for discard>
. You can use these
log files to generate our plots, even if you do not run the experiments yourself.
In addition to the results there is an AWK script [./results/check.awk
] that can check the
output logs generated by the RIOT applications for correctness. Due to syncing issues between the
stdio
of RIOT and FIT IoT-LAB characters might get lost in rare cases, skewing the evaluation.
This script used to spot these errors, but also unusual timeouts due to crashed or resource-drained
nodes.
All results are published under a CC-BY 4.0 license.
Contains the figures used in this README.