232 lines
9.3 KiB
TeX
232 lines
9.3 KiB
TeX
\chapter{Introduction} % Main chapter title
|
|
|
|
\label{Introduction}
|
|
|
|
Peer-to-peer overlay VPNs promise to restore genuine decentralization
|
|
by enabling direct connectivity between nodes regardless of NAT or
|
|
firewall restrictions. Yet practitioners choosing among the growing
|
|
number of mesh VPN implementations must rely largely on anecdotal
|
|
evidence: systematic, reproducible comparisons under realistic
|
|
conditions are scarce.
|
|
|
|
This thesis addresses that gap. We benchmark ten peer-to-peer VPN
|
|
implementations across seven workloads and four network impairment
|
|
profiles, yielding over 300 unique measurements. We complement these
|
|
performance benchmarks with a source code analysis of each
|
|
implementation, verified through direct engagement with the respective
|
|
maintainers. The entire experimental framework is built on Nix, NixOS,
|
|
and the Clan deployment system, making every result independently
|
|
reproducible.
|
|
|
|
\section{Motivation}
|
|
|
|
Peer-to-peer architectures promise censorship-resistant, fault-tolerant
|
|
infrastructure by eliminating single points of failure
|
|
\cite{shukla_towards_2021}.
|
|
These architectures underpin a growing range of systems---from IoT
|
|
edge computing
|
|
and content delivery networks to blockchain platforms like Ethereum.
|
|
Yet realizing these benefits requires distributing nodes across
|
|
genuinely diverse hosting entities.
|
|
|
|
In practice, this diversity remains illusory.
|
|
Amazon, Hetzner, and OVH collectively host 70\% of all Ethereum nodes
|
|
(see Figure~\ref{fig:ethernodes_hosting}),
|
|
concentrating nominally decentralized infrastructure
|
|
within a handful of cloud providers.
|
|
More concerning, these providers operate under overlapping regulatory
|
|
jurisdictions,
|
|
predominantly the United States and the European Union.
|
|
This concentration undermines technical sovereignty:
|
|
a single governmental action could compel service termination,
|
|
data disclosure, or traffic manipulation across a majority of the network.
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\includegraphics[width=1\textwidth]{Figures/ethernodes_hosting.png}
|
|
\caption{Distribution of Ethereum nodes hosted by various providers
|
|
\cite{noauthor_isps_nodate}}
|
|
\label{fig:ethernodes_hosting}
|
|
\end{figure}
|
|
|
|
Why does this centralization persist despite the explicit goals of
|
|
decentralization?
|
|
The answer lies in the practical barriers to self-hosting.
|
|
Cloud providers offer static IP addresses and publicly routable endpoints,
|
|
eliminating the networking complexity that plagues residential and
|
|
small-office deployments.
|
|
Most internet-connected devices sit behind Network Address Translation (NAT),
|
|
which prevents incoming connections without explicit port forwarding
|
|
or relay infrastructure.
|
|
Combined with dynamic IP assignments from ISPs, maintaining stable
|
|
peer connectivity
|
|
from self-hosted infrastructure traditionally required significant
|
|
technical expertise.
|
|
|
|
Overlay VPNs offer a solution to this fundamental barrier.
|
|
By establishing encrypted tunnels that traverse NAT boundaries,
|
|
mesh VPNs enable direct peer-to-peer connectivity without requiring
|
|
static IP addresses or manual firewall configuration.
|
|
Each node receives a stable virtual address within the overlay network,
|
|
regardless of its underlying network topology.
|
|
This capability is transformative:
|
|
it allows a device behind consumer-grade NAT to participate
|
|
as a first-class peer in a distributed system,
|
|
removing the primary technical advantage that cloud providers hold.
|
|
|
|
The Clan deployment framework builds on this foundation.
|
|
Clan leverages Nix and NixOS to eliminate entire classes of
|
|
configuration errors prevalent in contemporary infrastructure deployment,
|
|
reducing operational overhead to a degree where a single administrator
|
|
can reliably self-host complex distributed services.
|
|
Overlay VPNs are central to Clan's architecture,
|
|
providing the secure peer connectivity that enables nodes
|
|
to form cohesive networks regardless of their physical location or
|
|
NAT situation.
|
|
As illustrated in Figure~\ref{fig:vision-stages}, Clan envisions
|
|
a web interface that enables users to design and deploy private P2P networks
|
|
with minimal configuration, assisted by an integrated LLM
|
|
for contextual guidance and troubleshooting.
|
|
|
|
During the development of Clan, a recurring challenge became apparent:
|
|
practitioners held divergent preferences for mesh VPN solutions,
|
|
each citing different edge cases where their chosen VPN
|
|
proved unreliable or lacked essential features.
|
|
These discussions were largely grounded in anecdotal evidence
|
|
rather than systematic evaluation.
|
|
This observation revealed a clear need for rigorous,
|
|
evidence-based comparison of peer-to-peer overlay VPN implementations.
|
|
|
|
\subsection{Related Work}
|
|
|
|
Existing research offers only partial coverage of this space.
|
|
Lackorzynski et al.\ \cite{lackorzynski_comparative_2019} benchmark
|
|
OpenVPN, IPSec, Tinc, Freelan, MACsec, and WireGuard in the context
|
|
of industrial communication systems, measuring point-to-point
|
|
throughput, latency, and CPU overhead. Their work does not address
|
|
overlay network behavior such as NAT traversal or dynamic peer discovery.
|
|
The most closely related study by Kjorveziroski et al.\
|
|
\cite{kjorveziroski_full-mesh_2024} evaluates full-mesh VPN solutions
|
|
for distributed systems, analyzing throughput, reliability under packet
|
|
loss, and relay behavior for VPNs including ZeroTier. However, it
|
|
focuses primarily on solutions with a central point of failure and
|
|
limits its workloads to synthetic iperf3 tests. This thesis extends
|
|
that foundation by evaluating a broader set of VPN implementations
|
|
with emphasis on fully decentralized architectures, exercising them
|
|
under real-world workloads such as video streaming and package
|
|
downloads, applying multiple network impairment profiles, and
|
|
providing a fully reproducible experimental framework built on
|
|
Nix, NixOS, and Clan.
|
|
|
|
Beyond filling this research gap, a further goal was to create a fully
|
|
automated benchmarking framework capable of generating a public
|
|
leaderboard, similar in spirit to the js-framework-benchmark
|
|
(see Figure~\ref{fig:js-framework-benchmark}). By providing an
|
|
accessible web interface with regularly updated results, we hope to
|
|
encourage P2P VPN developers to optimize their implementations in
|
|
pursuit of top rankings.
|
|
|
|
\section{Research Contribution}
|
|
|
|
This thesis makes the following contributions:
|
|
|
|
\begin{enumerate}
|
|
\item A comprehensive benchmark of ten peer-to-peer VPN
|
|
implementations across seven workloads. Including real-world
|
|
video streaming and package downloads; and four network
|
|
impairment profiles, producing over 300 unique measurements.
|
|
\item A source code analysis of all ten VPN implementations,
|
|
combining manual code review with LLM-assisted analysis,
|
|
followed by verification through direct engagement with the
|
|
respective maintainers on GitHub.
|
|
\item A fully reproducible experimental framework built on
|
|
Nix, NixOS, and the Clan deployment system, with pinned
|
|
dependencies, declarative system configuration, and
|
|
deterministic cryptographic material generation, enabling
|
|
independent replication of all results.
|
|
\item A performance analysis demonstrating that Tailscale
|
|
outperforms the Linux kernel's default networking stack under
|
|
degraded conditions, and that kernel parameter tuning; Reno
|
|
congestion control in place of CUBIC, with RACK
|
|
disabled; yields measurable throughput improvements.
|
|
\item The discovery of several security vulnerabilities across
|
|
the evaluated VPN implementations.
|
|
\item An automated benchmarking framework designed for public
|
|
leaderboard generation, intended to encourage ongoing
|
|
optimization by VPN developers.
|
|
\end{enumerate}
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\includegraphics[width=1\textwidth]{Figures/krause-js-framework.png}
|
|
\caption{js-framework-benchmark results for Chrome 144.0
|
|
\cite{krause_krausestjs-framework-benchmark_2026}}
|
|
\label{fig:js-framework-benchmark}
|
|
\end{figure}
|
|
|
|
\begin{figure}[h]
|
|
\centering
|
|
|
|
% Row 1
|
|
\begin{subfigure}{0.45\textwidth}
|
|
\centering
|
|
\includegraphics[width=\linewidth]{Figures/vision/stage1.png}
|
|
\caption{Stage 1}
|
|
\end{subfigure}
|
|
\hfill
|
|
\begin{subfigure}{0.45\textwidth}
|
|
\centering
|
|
\includegraphics[width=\linewidth]{Figures/vision/stage2.png}
|
|
\caption{Stage 2}
|
|
\end{subfigure}
|
|
|
|
\vspace{1em} % Add spacing between rows
|
|
|
|
% Row 2
|
|
\begin{subfigure}{0.45\textwidth}
|
|
\centering
|
|
\includegraphics[width=\linewidth]{Figures/vision/stage3.png}
|
|
\caption{Stage 3}
|
|
\end{subfigure}
|
|
\hfill
|
|
\begin{subfigure}{0.45\textwidth}
|
|
\centering
|
|
\includegraphics[width=\linewidth]{Figures/vision/stage4.png}
|
|
\caption{Stage 4}
|
|
\end{subfigure}
|
|
|
|
\vspace{1em} % Add spacing between rows
|
|
|
|
% Row 3
|
|
\begin{subfigure}{0.45\textwidth}
|
|
\centering
|
|
\includegraphics[width=\linewidth]{Figures/vision/stage5.png}
|
|
\caption{Stage 5}
|
|
\end{subfigure}
|
|
\hfill
|
|
\begin{subfigure}{0.45\textwidth}
|
|
\centering
|
|
\includegraphics[width=\linewidth]{Figures/vision/stage6.png}
|
|
\caption{Stage 6}
|
|
\end{subfigure}
|
|
|
|
\vspace{1em} % Add spacing between rows
|
|
|
|
% Row 4
|
|
\begin{subfigure}{0.45\textwidth}
|
|
\centering
|
|
\includegraphics[width=\linewidth]{Figures/vision/stage7.png}
|
|
\caption{Stage 7}
|
|
\end{subfigure}
|
|
\hfill
|
|
\begin{subfigure}{0.45\textwidth}
|
|
\centering
|
|
\includegraphics[width=\linewidth]{Figures/vision/stage8.png}
|
|
\caption{Stage 8}
|
|
\end{subfigure}
|
|
|
|
\caption{Visionary Webinterface to Setup a Clan Family Network}
|
|
\label{fig:vision-stages}
|
|
\end{figure}
|
|
|