<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>Information Control Systems &amp; Technologies, September</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Yggdrasil routing scheme as a basis for large-scale decentralized mesh networks1</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Oleksii Pestov</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Halyna Kyrychek</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mariia Tiahunova</string-name>
        </contrib>
      </contrib-group>
      <pub-date>
        <year>2024</year>
      </pub-date>
      <volume>2</volume>
      <fpage>3</fpage>
      <lpage>25</lpage>
      <abstract>
        <p>In this paper, the scalability of the experimental Yggdrasil routing scheme regarding its logic, hop limit, CPU usage, and memory footprint is discussed. Experiments with the routing daemon are conducted on large- and small-scale topologies using meshnet-lab and coreemu-lab environments. The experiments show Yggdrasil to significantly outperform in hop limit other widely used mesh routing protocols, such as OLSR and Babel, give an insight into system resources usage trends, as well as reveal several caveats of Yggdrasil-based networks and a potential way of mitigating them. Taking into account the carried out research, Yggdrasil can be considered a valid and promising basis for the deployment of large-scale decentralized mesh networks of independent nodes as an alternative to traditional centralized hierarchical networking.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;decentralized mesh networks</kwd>
        <kwd>mesh routing</kwd>
        <kwd>Yggdrasil routing scheme</kwd>
        <kwd>scalability</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>Nowadays centralized software-defined networking is becoming increasingly popular with Internet
service providers (ISP) due to its remarkable benefits in automated remote hardware configuration,
That said, the
mentioned benefits come with a trade-off at the cost of network reliability and disruption
resilience, as centralization inevitably adds singular points of failure to the system. A consequence
of this is the relatively recent infamous Kyivstar network collapse that occurred on December 12,
2023, resulting in several days of downtime with a complete lack of customer connectivity.
Numerous services throughout Ukraine relied on Kyivstar and could not function until the damage
was eventually mitigated.</p>
      <p>This incident shows how unreliable centralized hierarchical communication systems may be
and calls for a different approach mesh networking, where the line between routing and
terminating (end) devices becomes blurry. The idea of this paradigm lies in every node of the
network being able to function independently from any other, establishing connections with other
nodes nearby (peering), and collaborating in an effort to route traffic for each other, rather than
relying on a central authority for this.</p>
      <p>
        While the concept of mesh networking is not new and a number of routing protocols have been
developed (OLSR, Babel, B.A.T.M.A.N. and its derivatives) and successfully used (e.g. the Freifunk
local networks and do so efficiently, as in use the least amount of system resources needed for
functioning, so that it could be deployed on relatively low-cost low-power devices. Another
network and potentially eavesdropped on by intermediate nodes [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. Theory and related works</title>
      <p>
        Most research in the field of large mesh network routing focuses on its implementation for IoT and
wireless sensory networks in particular, optimizing energy consumption and range at the cost of
throughput and security. For example, a CottonCandy [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] based network works by nodes arranging
themselves into a spanning tree from a designated Internet gateway node as the root, while also
avoiding collisions with recursive data requests during duty cycles. While this approach works well
node communication in a general-purpose network. Moreover, having a strictly designated root
node adds a single point of failure to the network, defeating the purpose of decentralization.
Yamamoto et al. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] propose the VORTEX routing protocol with an approach based on
opportunistic routing on a hierarchical tier structure established during the initialization phase.
simply forward the packets along the hierarchy until they reach the recipient taking multiple paths
for better reliability. Thus, the need to execute route discovery first is omitted, however the
network ends up being flooded with extra traffic, which would severely diminish its performance
on a large scale. Prabu et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] present a novel approach to mesh routing by using the concept of
representing it using bloom filters [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] in several intensity gradient levels. Nodes
in the direction of increasing intensity. When the destination is reached, a
along the probed path, so that other nodes looking for the previous two may stumble upon it and
follow to their destination, partially reusing the route. While in use, the discovered route is
gradually optimized. The main problem with this approach is, once again, its large-scale
performance due to random probing
potentially be needed to probe the entire network to find the destination, and increasing it would
lead to increased memory usage. A potential solution to the aforementioned problems could be in
the use of the experimental Yggdrasil routing scheme [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], the main point of which (the current
latest version being v0.5.5) is in the use of Ed25519 public key [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] based addressing and a
selfarranging spanning tree of the network. The latter is similar to CottonCandy, except the root of the
tree is the node with the lowest key value instead of a designated gateway, and thus can be
automatically replaced in case of a failure. Bloom filters are present on every on-tree link and
represent a set of node keys reachable through said link. Node lookups are done on-demand using
broadcasts, that eventually get culled with these bloom filters (O(n) computational complexity,
where n is the number of on-tree links of a given node). The result of such a lookup is the tree
coordinates of the receiving node relative to the current root of the network, by which the traffic
gets sent. On every subsequent node opportunistic greedy routing [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] is applied to figure out the
direction the traffic takes; in other words, the packets are sent over whatever single link brings
them closer to specified tree coordinates (O(n) computational complexity, where n is the number of
peers of a given node). This part of the process is similar to VORTEX in that route discovery is
omitted, instead forwarding the data with local decisions based on a hierarchical structure, but not
necessarily following it.
      </p>
      <p>
        The described approach has a number of additional advantages: nodes generate addresses for
themselves independently; transparent asymmetric end-to-end encryption; source/destination
verifiability with cryptographic keys used for addressing. Network congestion is managed
automatically at each node using a form of fair packet queuing, which attempts to balance traffic
traffic does not always take the shortest possible path, introducing higher latency, which can,
however, be accounted for. Link quality is also not considered outside of priorities between
multiple peerings to the same. Every node of the network only holds in memory a 1KB bloom filter
for every on-tree link as well as 32B keys of its direct peers and their ancestors on the path to the
links and the distance from the current root. As for CPU usage, notable spikes are expected on the
transmitting and receiving nodes due to encryption and decryption taking place respectively, as
well as some positive correlation with the number of links. Due to the Yggdrasil routing scheme
cover or even mention it.
testbed network as a NAT traversal tool for the purposes of remote control, but no scalability
testing of the routing scheme itself. Another work [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] compares Yggdrasil with a variety of other
mesh network routing protocols in a number of benchmarks, only one of which considers scaling
beyond 100 nodes. It is also worth noting that in the aforementioned benchmark node reachability
is measured only once with a limited packet arrival deadline. This approach is not exactly fitting
for Yggdrasil and on-demand routing in general, as the first packet always has a significantly
longer round trip time than the subsequent ones due to node lookup taking place first. The
research object of this paper is the evaluation process of the Yggdrasil routing scheme. The
hop limit, CPU usage and memory footprint of the routing daemon. The purpose of this research is
-scale decentralized communication networks.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Proposed methodology</title>
      <sec id="sec-3-1">
        <title>3.1. Large-scale benchmarking</title>
        <p>The purpose of large-scale benchmarking is to determine the performance of Yggdrasil on large
networks (50 nodes and above) while recording the system resource (CPU and memory) usage of
. Such testing is meant to give an idea of technical
specifications of hardware needed for an Yggdrasil network, as well as to show its hop limit if there
is one. Scaling of system resource usage and convergence time with network size is also important
when deciding on the viability of the routing scheme.</p>
        <p>
          The tests were conducted using the meshnet-lab environment due to its flexibility, the
possibility of emulating large-scale topologies with Linux network namespaces [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ], and
automating the process with Python. It should be noted, that the host system the tests were
eyond that point the system runs out
of memory and starts to use the swap partition. The benchmarking procedure is as follows:
        </p>
        <p>Prepare a topology with pre-generated JSON files included in meshnet-lab, and limit link
bandwidth to 100 Mbit/s. Launch routing daemons on nodes. Launch the system resource
monitoring script (records CPU and resident memory usage of routing daemons every second).
Wait 30 seconds for nodes to discover each other.</p>
        <p>Over the next 30 seconds send out a total of N unique random pings with a minimum hop count
of 2 and a deadline of 30 seconds, where N is the number of links in the topology. Wait 15 seconds.
Repeat steps 5-6 five more times.</p>
        <p>Launch the node information collection script (requests Yggdrasil-specific information, such as
public keys and tree views, from the routing daemons; needed to determine the root node in result
processing). Stop the routing daemons and resource monitoring scripts, and clear the network.
Repeat the procedure on a bigger topology until less than 40% of the pings arrive or more than 750
nodes are to be simulated.</p>
        <p>The described procedure was conducted on random tree and line topologies (Figure 1) as a more
realistic and worst-case scenario respectively. On larger topologies, it was needed to increase the
number of iterations in step 7 for the network to reach convergence. Additionally, for the purpose
of looking into the memory usage trend on a converged network, prolonged experiments were
conducted on the largest viable topology.</p>
        <p>A topology is considered viable if it ends up reaching convergence indicated by 100% ping
arrival. Another experiment on a random tree topology of 50 nodes with no bandwidth limitation
showed the difference in CPU usage for transmitting, receiving and intermediate nodes, as well as
nodes not taking part in the transmission.</p>
        <p>Traffic was generated for 10 seconds between two distant nodes (001e and 0032, see Figure 1)
using the iperf3 utility. Lastly, an experiment on a 750 nodes line topology with imperfect slow
links showed Yggdras silience to such conditions. Link parameters applied here were 10
Mbit/s bandwidth with a 10±5 ms latency. Traffic was generated between the first and last node
using the standard ping utility.</p>
        <p>
          The last two tests were performed manually. The benchmarking procedure was automated with
-lab. Resulting data was
analysed and plotted using pandas, seaborn and Matplotlib Python libraries [
          <xref ref-type="bibr" rid="ref14 ref15">14, 15</xref>
          ].
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Small-scale tests</title>
        <p>The purpose of
smallcomplicated scenarios than a large static network. Due to this, the testing process was more
exploratory in nature. Overall, we needed to see how exactly the Yggdrasil spanning tree is
arranged, what paths the traffic takes, and how tolerable node mobility is. This information is
important in that it exposes potential caveats and flaws of the routing scheme. For this, a tree
topology with a known root would be built.</p>
        <p>After launching Yggdrasil routing daemons on it, additional links were introduced. The
resulting network would then be analysed by querying the routing daemons about their views of
the tree and launching various one-sided traffic flows to see the paths they end up taking. Node
mobility tests were done by having one roaming node jump between static peers while pinging
another node.</p>
        <p>Of particular interest here were the cases of a node choosing a new parent upon losing the
current one and the network having a roaming root node.</p>
        <p>
          The tests were conducted in the coreemu-
with automated testing and node monitoring functions [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]. This software provides a graphical
user interface for easy network configuration and interaction with the nodes, as well as multiple
node and connection types including a wired and wireless LAN. The latter is particularly useful
due to the ability to dynamically form and break connections by simply dragging nodes around
during the emulation.
        </p>
        <p>Node movement can also be automated with mobility scripts. Another useful feature of CORE is
the visualization of throughput on wired links and wireless interfaces, allowing for traffic flow
tracing. The provided Docker image was modified to include the Yggdrasil routing daemon. The
following tests are run with pre-generated keys for every node for better control over the Yggdrasil
spanning tree.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Results</title>
      <sec id="sec-4-1">
        <title>4.1. Large-scale benchmarking</title>
        <p>The results of memory benchmarking on the random tree topology are presented in Figures 2 and
3.</p>
        <p>Figure 2 confirms the assumption about the memory usage of a node being positively influenced
by the number of its links. Figure 3 shows that, despite the increase in overall network size,
memory usage for the absolute majority of nodes stays roughly within the same range. Packet
arrival for random tree topology stays at an all-time 100%.</p>
        <p>Figures 4 and 5 depict the results of the same benchmark conducted on a line topology. Because
on line topology every node except the first and the last one has only two links, the hue and size of</p>
        <p>Comparing Figures 3 and 5 confirms the assumption about memory usage being positively
influenced by network length. This is also confirmed by peak memory usage per topology
presented in Table 1.</p>
        <p>This trend is much more noticeable on linear topologies, although for network sizes beyond 300,
it stops being as consistent. It is also clear that on eith
necessarily result in higher memory usage. In fact, due to nodes keeping in memory only their and
mory usage can be seen on the nodes further away from the
root. That said, outliers are also present, like nodes far from the root with lower memory usage and
the other way around, as well as nodes with a lower link count, but higher memory usage. This can
be partially attributed to the randomness of pings. Overall, even on a 750 node line the memory
footprint of the routing daemon did not exceed 33 MB, and, following the observed trend, it is
expected to rise fairly slowly beyond that.
length and is greater the closer to the middle of the line a particular node is. Furthermore, the root
node seems to always divide the line into two parts, for which length and middle points are
considered separately. This is especially clear on 700 and 450 node lines, where the root node
happened to be closer to the middle. On the former, there are significantly fewer nodes to the left
of the root than to the right of it, resulting in a massive CPU usage difference while still keeping
the trend of middle nodes having a greater CPU usage for both sides. The 450 node topology has a
similar case, exce
overall CPU usage than the smaller 400 node network. This observation leads to the conclusion
that it is more beneficial to keep the root of the network closer to its actual center, as in keeping
the number of nodes on every branch roughly similar. One of the ways this can be achieved is</p>
        <p>
          Note: CPU usage is recorded with the standard Linux ps utility, in which, according to its
manual page [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ], this metric is currently expressed as the percentage of time spent running during
the entire lifetime of a process. This is not ideal, but is fitting for this use case, as it does allow the
comparison of routing daemon processes.
        </p>
        <p>Figure 7 features the packet arrival ratio over time on a line topology for different network
sizes. Line points are slightly shifted on the time axis due to pings having a longer round-trip time
on longer topologies. The 700 and 750 node networks never quite reach 100% packet arrival. Upon
meshnet-lab environment on long topologies it needs to wait significantly longer for the initial
packet to arrive because of node lookup taking place. This leads to it sometimes sending a second
ion,
we can consider packet arrival above 95% to signify a converged network and find out the
approximate convergence time presented in Table 2. It should be noted that the measurements
were recorded at least 60 seconds apart from each other, so these numbers should not be taken at
face value. They can, however, be used to build a convergence time plot shown in Figure 8. The
resulting plot suggests a linear relation between network length and convergence time.</p>
        <p>For comparison, the same experiment on a line topology was conducted with different routing
protocols (OLSR, Babel) and showed their inability to handle long networks packet arrival goes
below 80% at 150 nodes and below 40% at 450 (see Figure 9).</p>
        <p>Extended experiments were also conducted and showed packet arrival to never increase for
these protocols.</p>
        <p>Memory usage over time on a 750 node line topology is presented in Figure 10. The lines have
decreased opacity to indicate a general trend, which suggests constant memory usage after the
network reaches convergence. The results of CPU usage measurement on a 50 node random tree
topology without bandwidth limitations are featured in Figure 11.</p>
        <p>The plot suggests receiving and transmitting nodes to have the greatest and second greatest
CPU usage respectively, with intermediate nodes following them and the rest of the nodes not
taking part in the transmission, which confirms the assumption mentioned in section 3.1. The CPU
usage measurements rise while the transmission is ongoing, and then gradually fall off due to the
specifics of the ps utility implementation mentioned earlier.</p>
        <p>The experiment on a 750 node line topology with slow links showed 749 hop communication to
be possible still, albeit with a considerable latency of 18 to 20 seconds, which calls for delay tolerant
applications to be used with such a network.</p>
        <p>The results of large-scale tests demonstrated the lack of observable hop limit with linear scaling
of convergence time to network length. Memory usage also scales with network length instead if
its overall size, staying within acceptable margins. CPU usage was shown to be influenced by root
node placement, opening up a way of optimizing it. Thus, Yggdrasil is confirmed to be viable for
use in large mesh networks.</p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. Small-scale tests</title>
        <p>The first small-scale experiment was conducted on a 9 node line topology with node n1
establishing links with several nodes in said line. The network and the corresponding sequence of
actions are shown in Figure 12. Purple arrows indicate the structure of the Yggdrasil spanning tree
in th child
being its child. Then, peerings with n2 and n7 are established in this exact order. When n1 n5
link gets severed, n1 consistently chooses n2 as its parent as the link with the longest uptime,
despite n7 being closer to the root. While this logic might seem inefficient, it keeps the network
more stable by eventually leaving only the most stable links in the spanning tree and thus making
network. It also becomes clear how exactly the spanning tree is built the
keys only matter in the choice of the root node, which becomes the point of reference for the rest
of the network. The spanning tree is arranged around the root based on the links that are brought
up first and taken down last.</p>
        <p>The next experiment was conducted on a 13 node network featured in Figure 13. Here, wired
links are used for the majority of nodes with unidirectional traffic flows between nodes n1 and n2.
Due to greedy routing, these traffic flows end up taking different paths. Off-tree links n12 n14
and n13 n15 allow the traffic to skip two nodes and are thus taken. While this feature of traffic
flows between two nodes taking different paths may not have been intentional, it is beneficial in
providing more bandwidth and mitigating congestion. However, greedy routing has its
disadvantages, mainly in only considering single link paths. An example of this is can be seen at
the bottom of Figure 13. The network is the same as in the previous example, except nodes n14 and
n15 are swapped places. As a result, links n12 n14 and n13 n15 no longer provide any
immediate benefit f view, thus not being taken. This results into both
traffic flows taking the same longer path through the root node. Two experiments regarding node
mobility were conducted, one with a leaf node being the roaming one and one with a roaming root
on a bigger network. The former involved node n1 constantly jumps between leaf nodes in the
network presented in Figure 14.</p>
        <p>Such behaviour did not impact the connectivity within the network besides node n1 itself.
Indeed, constantly changing peers means constantly changing tree coordinates, thus preventing
any prolonged traffic flows to the roaming node or disrupting them with node lookups. Traffic
originating in node n1 has a better time reaching its destination given that the destination is a
static node, as its tree coordinates do not change after the lookup and throughout the transmission.
To successfully receive traffic, a roaming node has to maintain at least one constant peer for the
duration of the transmission, otherwise it would be interrupted with a node lookup. Thus,
Yggdrasil tolerates node mobility but does not encourage it and requires nodes to maintain their
coordinates for bidirectional data exchange.</p>
        <p>A roaming root node, however, is an entirely different case. Figure 15 features a network similar
to the previous example, except this time the root node n9 is constantly jumping between pairs of
leaf nodes with a period of 10 seconds. This causes the nodes it comes into contact with to change
their tree coordinates and propagate this change throughout the network as they should, however,
by that time the root comes into contact with different peers, causing a conflicting reordering to
propagate as well. This results into nodes having different views on the spanning tree, which, in
turn, is the reason of various traffic anomalies seen in Figure 15. On such a small scale the traffic
between n18 and n26 takes the correct route for the majority of time, only sometimes being
disruptions in a larger network,
especially when new root node candidates pop up in completely different parts of the network.
This can be considered a potential attack vector. A possible way to mitigate it is the previously
mentioned low key mining, allowing for a constant root to be set up with a pre-generated
considerably low key, to the point of mining for a lower one becoming unreasonable and
detrimental. It would also make sense to set up several potential roots like this for the sake of
redundancy.</p>
        <p>Small-scale testing exposed the logic behind spanning tree arrangement and traffic routing,
which strives for using the most stable links for the spanning tree and taking shortcuts where
possible with the lowest effort from intermediary nodes. Mobility tests showed Yggdrasil to require
at least one stable peering for the receiving node during transmission, while otherwise roaming
leaf nodes only affect their own availability with eventual reestablishment of it after mobility
events cease. Root node mobility was found to be a potential attack vector with deterministic root
placement available as a means of mitigation. Thus, Yggdrasil is shown to be fitting for semi-stable
networks with no requirement of uninterruptible transmission during mobility events.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion</title>
      <p>In this paper the scalability of the experimental Yggdrasil routing scheme in regards to its logic,
hop limit, CPU usage and memory footprint of the routing daemon was discussed. The
computational complexity of node lookup/routing was evaluated as linear to the number of on-tree
links/peers of a given node. A number of experiments were conducted on both large- and
smallscale topologies using meshnet-lab and coreemu-lab environments. The results of the experiments
showed Yggdrasil to significantly outperform in hop limit other widely used mesh routing
protocols, such as OLSR and Babel. The experiments also showed the typical convergence time, as
well as memory and CPU usage trends of Yggdrasil and confirmed their scaling with the depth of
the network rather than the overall size of it. The memory footprint of the routing daemon never
exceeded 33 MB. This makes Yggdrasil a valid and promising basis for the deployment of
largescale decentralized mesh networks of independent nodes as an alternative to traditional centralized
hierarchical networking used in ISP networks.</p>
      <p>Testing also discovered several caveats in Yggdrasil-based networks, such as increased CPU
usage on longer spanning tree branches and traffic anomalies introduced by a roaming root node.
Preemptive low key mining for deterministic root node placement was suggested as a means of
mitigation for these problems.</p>
      <p>
        Before planning and constructing a real prototype network based on Yggdrasil, a number of
other topics have to be researched, like preferred underlying link and physical layer technologies,
required hardware, deployment on common hardware, user adoption, etc. Another question of
rather significant importance is security, especially with Yggdrasil being an open network as any
node is reachable by any other (in contrast to Carrier-grade NAT employed by ISPs [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]) and there
is no single entity in control of the network, malicious activity cannot be mitigated by simply
disconnecting bad actors from the network, leaving every node to fend for itself. As for underlying
link layer technologies, a possible candidate would be the 802.11s standard [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] with disabled
traffic forwarding and deployment of wired links where possible. Further work will be devoted to
delving into the aforementioned questions.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>H.</given-names>
            <surname>Nishizawa</surname>
          </string-name>
          ,
          <article-title>Architecting Cloud-native Optical Network with Whitebox Equipment</article-title>
          , in: Optical Fiber Communication Conference, OSA, Washington, D.C.,
          <year>2020</year>
          . doi:
          <volume>10</volume>
          .1364/ofc.
          <year>2020</year>
          .
          <year>w3c</year>
          .5.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Greig</surname>
          </string-name>
          ,
          <article-title>Wireless Mesh Networks as Community Hubs: Analysis of Small-Scale Wireless Mesh Networks</article-title>
          and
          <string-name>
            <surname>Community-Centered Technology Training</surname>
          </string-name>
          ,
          <source>J. Inf. Policy 8</source>
          .1 (
          <year>2018</year>
          )
          <fpage>232</fpage>
          266. doi:
          <volume>10</volume>
          .5325/jinfopoli.8.1.0232.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>O. R.</given-names>
            <surname>Rudkovskyi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. G.</given-names>
            <surname>Kirichek</surname>
          </string-name>
          .
          <article-title>Interaction support system of network aplications</article-title>
          .
          <source>In CEUR Workshop Proceedings</source>
          <volume>2832</volume>
          (
          <year>2020</year>
          )
          <fpage>11</fpage>
          -
          <lpage>23</lpage>
          URL: https://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>2832</volume>
          /paper01.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>D.</given-names>
            <surname>Wu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Liebeherr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A</given-names>
            <surname>Low-Cost</surname>
          </string-name>
          Low
          <article-title>-Power LoRa Mesh Network for Large-Scale Environmental Sensing</article-title>
          , IEEE Internet Things J. (
          <year>2023</year>
          )
          <article-title>1</article-title>
          . doi:
          <volume>10</volume>
          .1109/jiot.
          <year>2023</year>
          .
          <volume>3270237</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>R.</given-names>
            <surname>Yamamoto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Yamazaki</surname>
          </string-name>
          , S. Ohzahata, VORTEX:
          <article-title>Network-Driven Opportunistic Routing for Ad Hoc Networks</article-title>
          ,
          <source>Sensors 23.6</source>
          (
          <year>2023</year>
          )
          <article-title>2893</article-title>
          . doi:
          <volume>10</volume>
          .3390/s23062893.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>S.</given-names>
            <surname>Prabu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Maheswari</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Jothi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Banupriya</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Garikapati</surname>
          </string-name>
          ,
          <article-title>Efficient Bloom Filter-Based Routing Protocol for Scalable Mobile Networks</article-title>
          , in: RAiSE-2023, MDPI, Basel Switzerland,
          <year>2023</year>
          . doi:
          <volume>10</volume>
          .3390/engproc2023059075.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>F.</given-names>
            <surname>Grandi</surname>
          </string-name>
          ,
          <article-title>On the analysis of Bloom filters</article-title>
          , Inf. Process. Lett.
          <volume>129</volume>
          (
          <year>2018</year>
          )
          <fpage>35</fpage>
          39. doi:
          <volume>10</volume>
          .1016/j.ipl.
          <year>2017</year>
          .
          <volume>09</volume>
          .004.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Yggdrasil</given-names>
            <surname>Network</surname>
          </string-name>
          .
          <year>2021</year>
          . URL: https://yggdrasil-network.github.io/.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>J.</given-names>
            <surname>Brendel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Cremers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D</given-names>
            .
            <surname>Jackson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Zhao</surname>
          </string-name>
          ,
          <article-title>The Provable Security of Ed25519: Theory and Practice</article-title>
          ,
          <source>in: 2021 IEEE Symposium on Security and Privacy (SP)</source>
          , IEEE,
          <year>2021</year>
          . doi:
          <volume>10</volume>
          .1109/sp40001.
          <year>2021</year>
          .
          <volume>00042</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M.</given-names>
            <surname>Khaledi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Rovira-Sugranes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Afghah</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Razi</surname>
          </string-name>
          ,
          <article-title>On Greedy Routing in Dynamic UAV on Sensing, Communication and Networking (SECON Workshops)</article-title>
          , IEEE,
          <year>2018</year>
          . doi:
          <volume>10</volume>
          .1109/seconw.
          <year>2018</year>
          .
          <volume>8396354</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>P.-N.</given-names>
            <surname>Messan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Krupinski</surname>
          </string-name>
          , G. Vallicrosa,
          <string-name>
            <given-names>P.</given-names>
            <surname>Ridao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Maurelli</surname>
          </string-name>
          ,
          <article-title>Evaluation of computer networking methods for interaction with remote robotic systems, 2021 IEEE AFRICON (</article-title>
          <year>2021</year>
          )
          <article-title>1 6</article-title>
          . doi:
          <volume>10</volume>
          .48550/arXiv.2110.06385.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>B.</given-names>
            <surname>Reich</surname>
          </string-name>
          ,
          <article-title>Wifi-Ad-hoc Mesh Networks for mobile Systems</article-title>
          , Bachelor thesis, Hochschule für Angewandte Wissenschaften Hamburg, Hamburg, Germany,
          <year>2024</year>
          . URL: http://hdl.handle.
          <source>net/20.500</source>
          .12738/14753.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>D.</given-names>
            <surname>Schubert</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Jaeger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Helm</surname>
          </string-name>
          ,
          <article-title>Network Emulation using Linux Network Namespaces</article-title>
          ,
          <source>Network</source>
          <volume>57</volume>
          (
          <year>2019</year>
          ). URL: https://www.net.in.tum.de/fileadmin/TUM/NET/NET-2019
          <string-name>
            <surname>-</surname>
          </string-name>
          10-1/
          <fpage>NET2019</fpage>
          -10-1_
          <fpage>11</fpage>
          .pdf.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>J. P.</given-names>
            <surname>Mueller</surname>
          </string-name>
          , L. Massaron,
          <article-title>Python for Data Science for Dummies</article-title>
          , Wiley &amp; Sons, Incorporated, John,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <article-title>Chapter 5: Matplotlib and Seaborn, in: Data Literacy with Python</article-title>
          , De Gruyter,
          <year>2023</year>
          , pp.
          <fpage>117</fpage>
          <lpage>164</lpage>
          . doi:
          <volume>10</volume>
          .1515/
          <fpage>9781501518652</fpage>
          -
          <lpage>006</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>L.</given-names>
            <surname>Baumgartner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Meuser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Bloessl</surname>
          </string-name>
          , coreemu-lab
          <source>: An Automated Network Emulation and IEEE</source>
          ,
          <year>2021</year>
          . doi:
          <volume>10</volume>
          .1109/ghtc53159.
          <year>2021</year>
          .
          <volume>9612475</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>J.</given-names>
            <surname>Ahrenholz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Danilov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. R.</given-names>
            <surname>Henderson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Kim</surname>
          </string-name>
          ,
          <source>CORE: A realMILCOM</source>
          <year>2008</year>
          - 2008
          <source>IEEE Military Communications Conference (MILCOM)</source>
          , IEEE,
          <year>2008</year>
          . doi:
          <volume>10</volume>
          .1109/milcom.
          <year>2008</year>
          .
          <volume>4753614</volume>
          .23
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>ps</surname>
          </string-name>
          (1)
          <article-title>- Linux manual page</article-title>
          .
          <year>2020</year>
          . URL: https://man7.org/linux/man-pages/man1/ps.1.html.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>I.</given-names>
            <surname>Livadariu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Benson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Elmokashfi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Dhamdhere</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Dainotti</surname>
          </string-name>
          ,
          <article-title>Inferring Carrier-Grade NAT Deployment in the Wild</article-title>
          , - IEEE Conference on Computer Communications, IEEE,
          <year>2018</year>
          . doi:
          <volume>10</volume>
          .1109/infocom.
          <year>2018</year>
          .
          <volume>8486223</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>A.</given-names>
            <surname>Flammini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Sisinni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Tramarin</surname>
          </string-name>
          , IEEE
          <volume>802</volume>
          .
          <article-title>11s performance assessment: From simulations to real</article-title>
          - al
          <source>Instrumentation and Measurement Technology Conference (I2MTC)</source>
          , IEEE,
          <year>2017</year>
          . doi:
          <volume>10</volume>
          .1109/i2mtc.
          <year>2017</year>
          .
          <volume>7969752</volume>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>