Update on Overleaf.

This commit is contained in:
jsh77 2021-05-14 10:04:26 +00:00 committed by overleaf
parent 51001f7df4
commit 8548ac344d
5 changed files with 136 additions and 38 deletions

View File

@ -22,7 +22,7 @@ This project aimed to produce a multipath proxy, which combines multiple, hetero
\section*{Work Completed}
The project fulfilled its core success criteria and all but one extended criteria. The proxy supports transport over UDP, which provides increased performance and flexibility over TCP. The performance gains of the proxy over standard connections is tangible, demonstrating the proxy is effective at providing increased bandwidth in many cases. The proxy solution also improves the resilience of the Internet connection, such that if any one connection remains up, all carried flows are maintained.
The project fulfilled its core success criteria and most of its extended criteria. The proxy supports transport over UDP, which provides increased performance and flexibility over TCP. The performance gains of the proxy over standard connections is tangible, demonstrating the proxy is effective at providing increased bandwidth in many cases. The proxy solution also improves the resilience of the Internet connection, such that if any one connection remains up, all carried flows are maintained.
\section*{Special Difficulties}

View File

@ -28,7 +28,61 @@ When presenting data, error bars are given of the Inter-Quartile Range (IQR) of
\subsection{Flow Maintained}
\mynote{TODO}
The results for whether a flow can be maintained during a single connection loss are achieved using an iperf3 UDP test. The UDP test runs at a fixed bitrate, and measures the quantity of datagrams lost in the transfer. Three tests will be performed on a proxy with two connections: both connections remain up, one connection remains up, and both connections are lost. To satisfy this success criteria, the single connection lost may have a small amount of loss, while losing both connections should terminate the test.
\begin{figure}
\begin{Verbatim}[fontsize=\small]
Connecting to host X.X.X.X, port 5201
[ 5] local X.X.X.Y port 43039 connected to X.X.X.X port 5201
[ ID] Interval Transfer Bitrate Total Datagrams
[ 5] 0.00-1.00 sec 129 KBytes 1.05 Mbits/sec 91
[ 5] 1.00-2.00 sec 127 KBytes 1.04 Mbits/sec 90
[ 5] 2.00-3.00 sec 129 KBytes 1.05 Mbits/sec 91
[ 5] 3.00-4.00 sec 127 KBytes 1.04 Mbits/sec 90
[ 5] 4.00-5.00 sec 129 KBytes 1.05 Mbits/sec 91
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-5.00 sec 641 KBytes 1.05 Mbits/sec 0.000 ms 0/453 (0%) sender
[ 5] 0.00-5.04 sec 641 KBytes 1.04 Mbits/sec 0.092 ms 0/453 (0%) receiver
\end{Verbatim}
\caption{iperf3 UDP results with two stable connections (inbound).}
\label{fig:maintained-both-connections-alive}
\end{figure}
\begin{figure}
\begin{Verbatim}[fontsize=\small]
Connecting to host X.X.X.X, port 5201
[ 5] local X.X.X.Y port 49929 connected to X.X.X.X port 5201
[ ID] Interval Transfer Bitrate Total Datagrams
[ 5] 0.00-1.00 sec 129 KBytes 1.05 Mbits/sec 91
[ 5] 1.00-2.00 sec 127 KBytes 1.04 Mbits/sec 90
[ 5] 2.00-3.00 sec 129 KBytes 1.05 Mbits/sec 91
[ 5] 3.00-4.00 sec 127 KBytes 1.04 Mbits/sec 90
[ 5] 4.00-5.00 sec 129 KBytes 1.05 Mbits/sec 91
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-5.00 sec 641 KBytes 1.05 Mbits/sec 0.000 ms 0/453 (0%) sender
[ 5] 0.00-5.04 sec 635 KBytes 1.03 Mbits/sec 0.115 ms 4/453 (0.88%) receiver
\end{Verbatim}
\caption{iperf3 UDP results with a single connections loss (inbound).}
\label{fig:maintained-one-connections-down}
\end{figure}
\begin{figure}
\begin{Verbatim}[fontsize=\small]
Connecting to host X.X.X.X, port 5201
[ 5] local 1.1.1.1 port 51581 connected to 1.1.1.2 port 5201
[ ID] Interval Transfer Bitrate Total Datagrams
[ 5] 0.00-1.00 sec 129 KBytes 1.05 Mbits/sec 91
[ 5] 1.00-2.00 sec 127 KBytes 1.04 Mbits/sec 90
[ 5] 2.00-3.00 sec 129 KBytes 1.05 Mbits/sec 91
[ 5] 3.00-4.00 sec 129 KBytes 1.05 Mbits/sec 91
\end{Verbatim}
\caption{iperf3 UDP results with a total connection loss (inbound).}
\label{fig:maintained-both-connections-down}
\end{figure}
These results are given in figures \ref{fig:maintained-both-connections-alive}, \ref{fig:maintained-one-connections-down} and \ref{fig:maintained-both-connections-down} respectively. The results are as expected: no connection loss handles the 1MBps stream with no problems, and therefore no packets are lost, one connection loss causes slight packet loss ($0.88\%$) but the test is able to continue, and a complete connection loss stalls the test. Given the consistent external IP, this shows that a flow can be maintained through a single connection loss, with only a small loss of packets. This level of packet loss represents some loss on a phone call that lasts approximately 45ms, after which the call continues gracefully. This satisfies the success criteria.
\subsection{Bidirectional Performance Gains}
@ -83,21 +137,21 @@ To demonstrate that more bandwidth is available over two equal connections throu
\begin{figure}
\centering
\begin{subfigure}{.49\textwidth}
\begin{subfigure}{.7\textwidth}
\includegraphics[width=0.9\linewidth]{graphs/more-bandwidth-equal-a-inbound}
\caption{Throughput of proxied connections inbound to the client.}
\caption{Throughput of 1+1MB/s connections compared with 1MB/s and 2MB/s (inbound).}
\label{fig:more-bandwidth-equal-lesser}
\end{subfigure}
\begin{subfigure}{.49\textwidth}
\begin{subfigure}{.7\textwidth}
\includegraphics[width=0.9\linewidth]{graphs/more-bandwidth-equal-b-inbound}
\caption{Throughput of proxied connections outbound from the client.}
\caption{Throughput of 2+2MB/s connections compared with 2MB/s and 4MB/s (inbound).}
\label{fig:more-bandwidth-equal-greater}
\end{subfigure}
\caption{Graphs demonstrating that the throughput of two connections proxied lie between one connection of the same speed and one connection of double the speed}
\caption{Graphs showing that the throughput of two connections proxied lie between one connection of the same speed and one connection of double the speed}
\label{fig:more-bandwidth-equal}
\end{figure}
The results of these tests are given in Figure \ref{fig:more-bandwidth-equal}, for both a pair of 1MBps connections and a pair of 2MBps connections. To satisfy this success criteria, the proxied bar on each graph should exceed the throughput of the direct bar of equal bandwidth. It can be seen in both cases that this occurs, and thus the success criteria is met. The throughput far exceeds the single direct connection, and is closer to the single double bandwidth connection than the single equal bandwidth connection, demonstrating a good portion of the maximum performance is achieved.
The results of these tests are given in Figure \ref{fig:more-bandwidth-equal}, for both a pair of 1MBps connections and a pair of 2MBps connections. To satisfy this success criteria, the proxied bar on each graph should exceed the throughput of the direct bar of equal bandwidth. It can be seen in both cases that this occurs, and thus the success criteria is met. The throughput far exceeds the single direct connection, and is closer to the single double bandwidth connection than the single equal bandwidth connection, demonstrating a good portion of the maximum performance is achieved ($92.5\%$ for the 1+1MB/s proxy, and $88.5\%$ for the 2+2MB/s proxy).
\section{Extended Goals}
@ -107,17 +161,17 @@ For showing improved throughput over connections which are not equal, three resu
\begin{figure}
\centering
\begin{subfigure}{.49\textwidth}
\begin{subfigure}{0.7\textwidth}
\includegraphics[width=0.9\linewidth]{graphs/more-bandwidth-unequal-a-inbound}
\caption{Bandwidth of unequal connections compared to the }
\caption{Bandwidth of 1+2MB/s connections compared to 1+1MB/s connections and 2+2MB/s connections.}
\label{fig:more-bandwidth-unequal-lesser}
\end{subfigure}
\begin{subfigure}{.49\textwidth}
\begin{subfigure}{0.7\textwidth}
\includegraphics[width=0.9\linewidth]{graphs/more-bandwidth-unequal-b-inbound}
\caption{Throughput of proxied connections outbound from the client.}
\caption{Bandwidth of 2+4MB/s connections compared to 2+2MB/s connections and 4+4MB/s connections.}
\label{fig:more-bandwidth-unequal-greater}
\end{subfigure}
\caption{Graphs demonstrating that the throughput of two two connections proxied lie between one connection of the same speed and one connection of double the speed}
\caption{Graphs to demonstrate that the proxy appropriately balances between imbalanced connections, resulting in near-maximal throughput.}
\label{fig:more-bandwidth-unequal}
\end{figure}
@ -129,21 +183,12 @@ This criteria expands on the scalability in terms of number of connections of th
\begin{figure}
\centering
\begin{subfigure}{.49\textwidth}
\includegraphics[width=0.9\linewidth]{graphs/more-bandwidth-four-a-inbound}
\caption{1MB connections}
\label{fig:more-bandwidth-four-a}
\end{subfigure}
\begin{subfigure}{.49\textwidth}
\includegraphics[width=0.9\linewidth]{graphs/more-bandwidth-four-b-inbound}
\caption{2MB connections}
\label{fig:more-bandwidth-four-b}
\end{subfigure}
\caption{Scaling of equal connections}
\includegraphics[width=0.7\linewidth]{graphs/more-bandwidth-four-b-inbound}
\caption{Scaling of 2-4 equal bandwidth connections when combined.}
\label{fig:more-bandwidth-four}
\end{figure}
Provided in Figure \ref{fig:more-bandwidth-four} are results for both 1MBps and 2MBps connections. Firstly, it is clear that the proxy consisting of 4 connections exceeds the throughput of the proxy consisting of 3 connections in both cases. Secondly, it appears that a linear trend is forming. This trends will be further evaluated in Section \ref{section:performance-evaluation}, but suggests that the structure of the proxy suffers little loss in efficiency from adding further connections.
Provided in Figure \ref{fig:more-bandwidth-four} are results for each of 2, 3 and 4 2MBps connections. Firstly, it is clear that the proxy consisting of 4 connections exceeds the throughput of the proxy consisting of 3 connections. Secondly, it appears that a linear trend is forming. This trends will be further evaluated in Section \ref{section:performance-evaluation}, but suggests that the structure of the proxy suffers little loss in efficiency from adding further connections.
\subsection{Bandwidth Variation}
@ -158,11 +203,11 @@ The criteria will be met if the following are true: the throughput begins at the
\label{fig:capacity-changes}
\end{figure}
The results are given in Figure \ref{fig:capacity-changes}. The decreasing series drops from 2+2MB/s connections, with a maximum throughput of 32Mbps, to 1+2MB/s connections, with a maximum throughput of 24Mbps. The increasing series increases from 1+1MB/s connections, with a maximum throughput of 15Mbps, to 1+2MB/s connections, with a maximum throughput of 24Mbps. The events occur at approximately the same time. The graph displays each series beginning at their constant amount, before converging at approximately 24Mbps in the center of the graph. Once the connection change is reversed, each series returns to its original throughput. This satisfies the success criteria for connection capacity changes.
The results are given in Figure \ref{fig:capacity-changes}. The decreasing series drops from 2+2MB/s connections, with a maximum throughput of 32Mbps, to 1+2MB/s connections, with a maximum throughput of 24Mbps. The increasing series increases from 1+1MB/s connections, with a maximum throughput of 16Mbps, to 1+2MB/s connections, with a maximum throughput of 24Mbps. The events occur at approximately the same time. The graph displays each series beginning at their constant amount, before converging at approximately 24Mbps in the center of the graph. Once the connection change is reversed, each series returns to its original throughput. This satisfies the success criteria for connection capacity changes.
\subsection{Connection Loss}
This criteria judges the ability of the proxy as a whole to handle a complete connection loss while maintaining proportional throughput, and later regaining that capacity when the connection becomes available again. As the proxy has redundant connections, it is feasible for this to cause a minimal loss of service. Unfortunately, losing a connection causes significant instability with the proxy, so this extended goal has not been met.
This criteria judges the ability of the proxy as a whole to handle a complete connection loss while maintaining proportional throughput, and later regaining that capacity when the connection becomes available again. As the proxy has redundant connections, it is feasible for this to cause a minimal loss of service. Unfortunately, losing a connection causes significant instability with the proxy, so this extended goal has not been met. This is due to the interactions between the proxy and the system kernel, where the proxy has very little control of the underlying TCP connection. With future work on UDP I am hopefully that this will be eventually satisfied, but it is not with the current implementation.
\subsection{Single Interface Remote Portal}
@ -176,7 +221,7 @@ The extended goal of connection metric values has not been implemented. Instead,
\subsection{UDP Proxy Flows}
UDP flows are implemented, and provide a solid base for UDP testing and development. The present implementation of a New Reno imitating congestion control mechanism still has some implementation flaws, meaning that UDP is not yet feasible for use. However, the API for writing congestion control mechanisms is strong, and some of the features suggested in Section \ref{section:future-work} could be developed on this base, so that much is a success.
UDP flows are implemented, and provide a solid base for UDP testing and development. The present implementation of a New Reno imitating congestion control mechanism still has some implementation flaws, meaning that UDP is not yet feasible for use. However, the API for writing congestion control mechanisms is strong, and some of the future work suggested in Section \ref{section:future-work} could be developed on this base, so that much is a success.
\section{Performance Evaluation}
\label{section:performance-evaluation}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

View File

@ -1,8 +0,0 @@
%!TEX root = ../thesis.tex
% ********************** Thesis Appendix B - Outbound Graphs *************************
\chapter{Outbound Graphs}
\label{appendix:outbound-graphs}
The graphs shown in the evaluation section are Inbound to the Client (unless otherwise specified).
This appendix contains the same tests but Outbound from the client.

View File

@ -4,5 +4,66 @@
\chapter{Outbound Graphs}
\label{appendix:outbound-graphs}
The graphs shown in the evaluation section are Inbound to the Client (unless otherwise specified).
This appendix contains the same tests but Outbound from the client.
\begin{figure}
\begin{Verbatim}[fontsize=\small]
Connecting to host X.X.X.Y, port 5201
[ 5] local X.X.X.X port 53587 connected to X.X.X.Y port 5201
[ ID] Interval Transfer Bitrate Total Datagrams
[ 5] 0.00-1.00 sec 129 KBytes 1.05 Mbits/sec 91
[ 5] 1.00-2.00 sec 127 KBytes 1.04 Mbits/sec 90
[ 5] 2.00-3.00 sec 129 KBytes 1.05 Mbits/sec 91
[ 5] 3.00-4.00 sec 127 KBytes 1.04 Mbits/sec 90
[ 5] 4.00-5.00 sec 129 KBytes 1.05 Mbits/sec 91
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-5.00 sec 641 KBytes 1.05 Mbits/sec 0.000 ms 0/453 (0%) sender
[ 5] 0.00-5.04 sec 641 KBytes 1.04 Mbits/sec 0.070 ms 0/453 (0%) receiver
\end{Verbatim}
\caption{iperf3 UDP results with two stable connections (outbound).}
\end{figure}
\begin{figure}
\begin{Verbatim}[fontsize=\small]
Connecting to host X.X.X.Y, port 5201
[ 5] local X.X.X.X port 38793 connected to X.X.X.Y port 5201
[ ID] Interval Transfer Bitrate Total Datagrams
[ 5] 0.00-1.00 sec 129 KBytes 1.05 Mbits/sec 91
[ 5] 1.00-2.00 sec 127 KBytes 1.04 Mbits/sec 90
[ 5] 2.00-3.00 sec 129 KBytes 1.05 Mbits/sec 91
[ 5] 3.00-4.00 sec 129 KBytes 1.05 Mbits/sec 91
[ 5] 4.00-5.00 sec 127 KBytes 1.04 Mbits/sec 90
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-5.00 sec 641 KBytes 1.05 Mbits/sec 0.000 ms 0/453 (0%) sender
[ 5] 0.00-5.04 sec 635 KBytes 1.03 Mbits/sec 0.086 ms 4/453 (0.88%) receiver
\end{Verbatim}
\caption{iperf3 UDP results with a single connections loss (outbound).}
\end{figure}
\begin{figure}
\begin{Verbatim}[fontsize=\small]
Connecting to host X.X.X.Y, port 5201
[ 5] local X.X.X.X port 35549 connected to X.X.X.Y port 5201
[ ID] Interval Transfer Bitrate Total Datagrams
[ 5] 0.00-1.00 sec 129 KBytes 1.05 Mbits/sec 91
[ 5] 1.00-2.00 sec 127 KBytes 1.04 Mbits/sec 90
[ 5] 2.00-3.00 sec 129 KBytes 1.05 Mbits/sec 91
[ 5] 3.00-4.00 sec 127 KBytes 1.04 Mbits/sec 90
\end{Verbatim}
\caption{iperf3 UDP results with a total connection loss (outbound).}
\end{figure}
\setcounter{figure}{5}
\begin{figure}
\centering
\begin{subfigure}{.7\textwidth}
\includegraphics[width=0.9\linewidth]{graphs/more-bandwidth-equal-a-inbound}
\caption{Throughput of 1+1MB/s connections compared with 1MB/s and 2MB/s (outbound).}
\end{subfigure}
\begin{subfigure}{.7\textwidth}
\includegraphics[width=0.9\linewidth]{graphs/more-bandwidth-equal-b-inbound}
\caption{Throughput of 2+2MB/s connections compared with 2MB/s and 4MB/s (outbound).}
\end{subfigure}
\caption{Graphs showing that the throughput of two connections proxied lie between one connection of the same speed and one connection of double the speed}
\end{figure}