dissertation-4-dissertation/1_Introduction/introduction.tex

75 lines
6.2 KiB
TeX
Raw Normal View History

2020-11-12 17:52:41 +00:00
%!TEX root = ../thesis.tex
%*******************************************************************************
%*********************************** First Chapter *****************************
%*******************************************************************************
\chapter{Introduction} %Title of the First Chapter
\ifpdf
2021-03-31 13:16:40 +01:00
\graphicspath{{1_Introduction/Figs/Raster/}{1_Introduction/Figs/PDF/}{1_Introduction/Figs/}}
2020-11-12 17:52:41 +00:00
\else
2021-03-31 13:16:40 +01:00
\graphicspath{{1_Introduction/Figs/Vector/}{1_Introduction/Figs/}}
2020-11-12 17:52:41 +00:00
\fi
2021-04-01 00:12:32 +01:00
Most UK residences receive broadband speeds advertised at between 30Mbps and 100Mbps download (Ofcom, “UK Home Broadband Performance.”, \cite{ofcom_performance_2020}). However, it is often possible to have multiple low bandwidth connections installed. More generally, a wider variety of Internet connections for fixed locations are becoming available with time. These include: DSL, Fibre To The Premises, 4G, 5G, Wireless ISPs such as LARIAT\footnote{\url{http://lariat.net}} and Low Earth Orbit ISPs such as Starlink\footnote{\url{https://starlink.com}}. This work focuses on a method of providing an aggregate link from multiple distinct connections, regardless of their likeness.
2020-11-12 20:20:04 +00:00
\section{Existing Work}
2020-11-22 17:23:51 +00:00
\subsection{MultiPath TCP}
2020-12-28 18:37:16 +00:00
MultiPath TCP (Handley et al., “TCP Extensions for Multipath Operation with Multiple Addresses.”, \cite{handley_tcp_2020}) is an extension to the regular Transmission Control Protocol, allowing the creation of subflows. MultiPath TCP was designed with two purposes: increasing resiliency and throughput for multi-homed mobile devices, and providing multi-homed servers with better control over balancing flows between their interfaces.
2020-11-22 17:23:51 +00:00
2021-04-01 00:12:32 +01:00
The first reason that MPTCP does not satisfy the motivation for this project is temporal. MPTCP is most effective at creating flows when the device has distinct interfaces or IP addresses. In the case of an IPv4 home connection, it is often the case that a single IPv4 address is provided to the home. This leads to the use of NAT for IPv4 addresses behind the router. If an MPTCP capable device lies behind a NAT router which has two external IPv4 addresses, the device itself will have no knowledge of this. This can be solved for server devices by having an IP on each NAT, but does not provide a good solution for standard devices such as laptops with a single WiFi interface, or smart televisions with no knowledge of the network structure.
2020-11-22 17:23:51 +00:00
2021-04-01 00:12:32 +01:00
Further, it is important to remember legacy devices. Many legacy devices will never support IPv6, and will never support MPTCP. Though it is possible that these devices will not require the performance benefits available from multiple Internet connections, it is likely that they would benefit particularly from a more reliable connection. Being able to apply speed and reliability benefits to an entire network without control over every device on it is a significant benefit to the proxy presented in this work.
2020-11-22 17:23:51 +00:00
2021-04-01 00:12:32 +01:00
The second reason that MPTCP can not immediately shift the Internet to supporting of multipath is the rise of alternative UDP based protocols for previous TCP use cases. Although MPTCP is now making its way into the Linux kernel, many services are switching to lighter UDP protocols such as QUIC. The most interesting example of this is HTTP/3, which was previously known as HTTP over QUIC. This shift to application controlled network connections which do not contain unnecessary overhead for each specific application is a trend in Internet applications at this time. It remains to be seen whether this will allow for faster or cause slower deployments of extensions to protocols, but it will create a less uniform Internet than one which relies entirely on TCP, making a shift of the entire Internet to supporting multipath all the more challenging.
2020-11-22 17:23:51 +00:00
2020-11-12 20:20:04 +00:00
\section{Aims}
2020-11-17 22:49:16 +00:00
2021-04-01 00:12:32 +01:00
This project aims to provide a method of combining a variety of Internet connections, such as the situations listed above.
2020-11-12 20:20:04 +00:00
2021-04-01 00:12:32 +01:00
When combining Internet connections, there are three main measures that one can prioritise: throughput, resilience, and latency. This project aims to provide throughput and resilience at the cost of latency. This is achieved by inserting additional items into the network stack, in order to split/combine over bottlenecks, as seen in figure \ref{fig:combining-bottlenecks}.
2020-11-22 17:23:51 +00:00
2021-02-15 12:14:41 +00:00
\begin{figure}
\centering
2021-04-01 00:12:32 +01:00
\begin{tikzpicture}[scale=0.8]
2021-02-15 12:14:41 +00:00
\draw (0,0.14) rectangle (1,2.14);
\draw (7,0.14) rectangle (8,2.14);
2021-03-02 00:25:24 +00:00
\draw (1, 1.75) .. controls (1.5, 1.75) and (2.5, 2.5) .. (3, 2.5);
\draw (3, 2.5) -- (5, 2.5);
\draw (5, 2.5) .. controls (5.5, 2.5) and (6.5, 1.75) .. (7, 1.75);
2021-02-15 12:14:41 +00:00
\draw (4, 2.8) node {10Mbps};
2021-03-02 00:25:24 +00:00
\draw (1, 1) .. controls (1.5, 1) and (2.5, 1.75) .. (3, 1.75);
\draw (3, 1.75) -- (5, 1.75);
\draw (5, 1.75) .. controls (5.5, 1.75) and (6.5, 1) .. (7, 1);
2021-02-15 12:14:41 +00:00
2021-03-02 00:25:24 +00:00
\draw (1, 0.9) .. controls (1.5, 0.9) and (2.5, 0.15) .. (3, 0.15);
\draw (3, 0.15) -- (5, 0.15);
\draw (5, 0.15) .. controls (5.5, 0.15) and (6.5, 0.9) .. (7, 0.9);
2021-02-15 12:14:41 +00:00
2021-03-02 00:25:24 +00:00
\draw (1, 0.53) .. controls (1.5, 0.53) and (2.5, -0.22) .. (3, -0.22);
\draw (3, -0.22) -- (5, -0.22);
\draw (5, -0.22) .. controls (5.5, -0.22) and (6.5, 0.53) .. (7, 0.53);
2021-02-15 12:14:41 +00:00
\draw (4, -0.52) node {5Mbps};
2021-04-01 00:12:32 +01:00
\draw (0.5, 2.5) node {Proxy};
2021-02-15 12:14:41 +00:00
\draw (0, 1.7) -- (-2, 1.7);
\draw (0, 0.58) -- (-2, 0.58);
2021-03-02 00:25:24 +00:00
\draw (-3, 1.14) node {15Mbps};
2021-02-15 12:14:41 +00:00
2021-04-01 00:12:32 +01:00
\draw (7.5, 2.5) node {Proxy};
2021-02-15 12:14:41 +00:00
\draw (8, 1.7) -- (10, 1.7);
\draw (8, 0.58) -- (10, 0.58);
2021-03-02 00:25:24 +00:00
\draw (11, 1.14) node {15Mbps};
2021-02-15 12:14:41 +00:00
\end{tikzpicture}
2021-03-02 00:25:24 +00:00
\caption{A high level overview of the bottlenecks that are combined in this solution.}
\label{fig:combining-bottlenecks}
2021-04-01 00:12:32 +01:00
\end{figure}
The primary benefit of the approach presented in this work is for use cases where connection capacities are not consistent. I present a solution that effectively load balances across changing connections, such as wireless, allowing use cases which load balance across such connections in combination with existing fixed lines. This enables situations where load balancing was not previously possible to take advantage of multiple connections, potentially vastly increasing throughput capacity.