diff --git a/Chapters/Background.tex b/Chapters/Background.tex new file mode 100644 index 0000000..94d4517 --- /dev/null +++ b/Chapters/Background.tex @@ -0,0 +1,44 @@ +\chapter{Background} % Main chapter title + +\label{Background} + +\subsection{Nix: A Safe and Policy-Free System for Software Deployment} + +Nix addresses significant issues in software deployment by utilizing +cryptographic hashes to ensure unique paths for component instances +\cite{dolstra_nix_2004}. Features such as concurrent installation of +multiple versions, atomic upgrades, and safe garbage collection make +Nix a flexible deployment system. This work uses Nix to ensure that +all VPN builds and system configurations are deterministic. + +\subsection{NixOS: A Purely Functional Linux Distribution} + +NixOS extends Nix principles to Linux system configuration +\cite{dolstra_nixos_2008}. System configurations are reproducible and +isolated from stateful interactions typical in imperative package +management. This property is essential for ensuring identical test +environments across benchmark runs. + +\subsection{UDP NAT and Firewall Puncturing in the Wild} + +Halkes and Pouwelse~\cite{halkes_udp_2011} measure UDP hole punching +efficacy on a live P2P network using the Tribler BitTorrent client. +Their study finds that 79\% of peers are unreachable due to NAT or +firewall restrictions, yet 64\% reside behind configurations amenable +to hole punching. Among compatible peers, over 80\% of puncturing +attempts succeed, establishing hole punching as a practical NAT +traversal technique. Their timeout measurements further indicate that +keep-alive messages must be sent at least every 55 seconds to maintain +open NAT mappings. + +These findings directly inform the evaluation criteria for this thesis. +All mesh VPNs tested rely on UDP hole punching for NAT traversal; +the 80\% success rate sets a baseline expectation, while the 55-second +timeout informs analysis of each implementation's keep-alive behavior +during source code review. + +\subsection{An Overview of Packet Reordering in TCP} +TODO \cite{leung_overview_2007} + +\subsection{Performance Evaluation of TCP over QUIC Tunnels} +TODO \cite{guo_implementation_2025} diff --git a/Figures/baseline/tcp/Max TCP Window Size.png b/Figures/baseline/tcp/Max TCP Window Size.png new file mode 100644 index 0000000..212eec7 Binary files /dev/null and b/Figures/baseline/tcp/Max TCP Window Size.png differ diff --git a/Figures/baseline/tcp/TCP Retransmit Rate.png b/Figures/baseline/tcp/TCP Retransmit Rate.png new file mode 100644 index 0000000..bd40c7e Binary files /dev/null and b/Figures/baseline/tcp/TCP Retransmit Rate.png differ diff --git a/Figures/baseline/tcp/TCP Throughput.png b/Figures/baseline/tcp/TCP Throughput.png new file mode 100644 index 0000000..2cd7fdd Binary files /dev/null and b/Figures/baseline/tcp/TCP Throughput.png differ diff --git a/Figures/baseline/tcp/Total Data Transferred.png b/Figures/baseline/tcp/Total Data Transferred.png new file mode 100644 index 0000000..e7b712f Binary files /dev/null and b/Figures/baseline/tcp/Total Data Transferred.png differ