added graphics and small editorial changes

master
Frederik Maaßen 2 years ago
parent 9d5198ba5d
commit caf9d1efd0
  1. 6526
      thesis/content/basics/basics.log
  2. 22
      thesis/content/basics/basics.tex
  3. 144
      thesis/figure_shortcut_example.svg
  4. 81
      thesis/figure_template.svg
  5. 162
      thesis/symbol_sheet.svg
  6. BIN
      thesis/thesis.pdf
  7. 8
      thesis/thesis.tex

File diff suppressed because it is too large Load Diff

@ -1,17 +1,21 @@
\chapter{Basics}
\label{basics}
In this chapter we are going to give an overview over common network setups and failure recovery mechanisms.
\section{Resilient routing in networks}
Modern networks have high requirements for flexibility and configurability. While in the past many of these challenges were solved by specialized networking devices, the current trend strives towards softwarized networks, taking complexity from single devices and instead using centralized controllers like POX to handle logical operations (\cite{rak2020datasdn}) on the so-called control plane.
This causes networks to be logically split between the data plane, describing operations on the physical network, and the control plane, managing the network from "above".
Typically a controller like POX would manage the flow of packets, react to failures and also provide an interface for business logic, allowing for the creation of intelligent networks.
This causes networks to be logically split between the data plane, describing operations on the physical network, and the control plane, managing the network.
\subsection{Data plane}
Actions that are performed directly on the network components, e.g. routers and switches, belong to the data plane. The amount of available information about the network on each of these components is inherently limited, at most including directly neighbouring components.
As such, most methods providing additional network resilience on the data plane are network agnostic. One widely used method to add resilience are static routes that are installed directly on the components, re-routing traffic in case of failures. These are called local \textit{fast re-routing} (FRR) (\textcite{Nelakuditi.2007}).
As such, most methods providing additional network resilience on the data plane are network agnostic and operations executed on the data plane can be assumed to be very fast as overhead produced by e.g. communication protocols is avoided.
One widely used method to add resilience are static routes that are installed directly on the components, re-routing traffic in case of failures. These are called local \textit{fast re-routing} (FRR) (\textcite{Nelakuditi.2007}).
They mostly use interface dependent routing, identifying returning packets and routing them over an alternative path.
Because FRR acts on the data-plane it reacts very fast and will re-route packets in a matter of milliseconds, but by its agnostic nature will often create loops and therefore delays and additional traffic in a network.
@ -20,13 +24,13 @@ Because FRR acts on the data-plane it reacts very fast and will re-route packets
\subsection{Control plane}
In contrast, a global convergence protocol like \textit{Open Shortest Path First} (OSPF) (\textcite{Moy.1998}) (maybe use another example here with a more current approach, including usage of controllers) will react on failures by collecting information about the network and calculating near-optimal alternative routes. It then re-writes the routing tables on each affected component.
This operation on the control plane is more thorough, but can only re-write rules in a matter of seconds, which is very fast by human standards, but is still slow enough to potentially create backlog and reduce availability.
This operation on the control plane is more thorough, but calculating and re-writing rules takes a few seconds, which is very fast by human standards, but is still slow enough to potentially create backlog and reduce availability.
This is the reason why most modern networks will use a combination of FRR and a global convergence protocol, allowing sub-optimal paths to restore availability while the global convergence protocol provides an optimised routing after some time.
\subsection{Fast Recovery Methods}
The combination of FRR and global convergence protocols creates a time gap, in which traffic is re-routed by FRR and the network waits for the global convergence protocol. As stated previously, loops created by the FRR routes will affect the network in this time frame and will not only potentially delay traffic but also reserve scarce link capacity on looped routes.
The combination of FRR and global convergence protocols creates a time gap, in which traffic is re-routed by FRR and the network waits for the global convergence protocol. Loops created by the FRR routes will affect the network in this time frame and will not only potentially delay traffic but also reserve scarce link capacity on looped routes.
To alleviate this issue, multiple solutions were proposed that will either enhance FRR or correct sub-optimal routings created by FRR.
\subsubsection{Multiple routing layers}
@ -46,18 +50,20 @@ When trying to evaluate such networking paradigms, it becomes necessary to imple
While using real life components might be the most realistic approach, it quickly becomes infeasible especially in a scientific context, as it not only adds dependencies on different hardware vendors possibly distorting results, but also reduces replicability of said results.
Furthermore it also complicates automation of measurements, increasing the overhead.
Furthermore it also complicates automation of measurements, increasing the overhead in testing.
With virtualization it becomes possible to implement huge network structures and testing setups on a single computer, while also allowing for easy replication of results by sharing scripts.
\subsection{Mininet}
Mininet is a tool to create virtual networks, with each component running its own linux kernel on a single system.
Each of these components can be configured, including ethernet devices and ip routing tables, by either connecting directly and executing commands on a terminal or by creating python scripts using Mininets Python API.
This allows the quick creation and configuration of test environments, as well as replicability of test scenarios and the creation of failure scenarios.
Additionally it supports the OpenFlow protocol and the usage of controllers like POX, as well as the P4 language, which can be used to customize packet handling even more. Written controllers can then even be used in real life setups that replicate the created network in Mininet and retain their programmed functionality.
Additionally it supports the OpenFlow protocol (maybe omit the OpenFlow protocol as it is not as widely used anymore) and the usage of controllers like Pox, as well as the P4 language, which can be used to customize packet handling even more.
This allows the quick creation and configuration of test environments, as well as replicability of test scenarios, the creation of failure scenarios and the application in real life.
It has been confirmed to be a realistic approximation for experiments for up to 1500 hosts in \textcite{8515678}.
Its throughput is dependent on CPU capabilities, but by allowing for limitations on the throughput over the whole network as well as its relatively small overhead, it was confirmed to be a realistic approximation for experiments for up to 1500 hosts in \textcite{8515678}.
Each component comes equipped with a set of tools including iperf2 by default, and the pre-configured Mininet VM also includes tools like wireshark, making Mininet a good option for non-hardware performance testing and experimentation.

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="210mm"
height="297mm"
viewBox="0 0 210 297"
version="1.1"
id="svg5"
inkscape:version="1.1.2 (b8e25be833, 2022-02-05)"
sodipodi:docname="figure_shortcut_example.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="2"
inkscape:cx="246.75"
inkscape:cy="157"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:snap-grids="true"
inkscape:snap-to-guides="true">
<inkscape:grid
type="xygrid"
id="grid9"
units="mm"
spacingx="3"
spacingy="3"
empspacing="1"
empcolor="#3f3fff"
empopacity="0.16470588" />
<sodipodi:guide
position="8.9999998,207.00001"
orientation="1,0"
id="guide11" />
<sodipodi:guide
position="201,222.00001"
orientation="1,0"
id="guide13" />
<sodipodi:guide
position="-50.999999,288.00001"
orientation="0,-1"
id="guide15" />
<sodipodi:guide
position="-33,9"
orientation="0,-1"
id="guide17" />
<sodipodi:guide
position="105,306"
orientation="1,0"
id="guide21" />
<sodipodi:guide
position="174,264"
orientation="1,0"
id="guide23" />
<sodipodi:guide
position="36,270"
orientation="1,0"
id="guide25" />
<sodipodi:guide
position="70.5,281.05069"
orientation="-1,0"
id="guide3469"
inkscape:label=""
inkscape:locked="false"
inkscape:color="rgb(0,0,255)" />
</sodipodi:namedview>
<defs
id="defs2" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<path
id="rect4958"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.0705192;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 41.34152,35.910879 v 1.401274 H 26.885644 v 0.926368 H 41.34152 v 1.3509 l 4.802771,-1.839271 z" />
<rect
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:0.0799999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5591"
width="12"
height="9"
x="30.000002"
y="42" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2">
<g
id="g4878"
transform="matrix(0.67058161,0,0,0.62100718,-34.850099,9.6552834)">
<g
id="g3103"
transform="matrix(1.3704426,0,0,1.1836715,-38.896147,-5.8499835)">
<path
id="path85-5"
style="fill:#999999;fill-rule:evenodd;stroke:#000000;stroke-width:1.1328;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 359.61914,76.154297 c 0.007,8.623005 -0.011,17.290465 0.002,25.892583 -8.9e-4,10.1243 16.66709,18.33193 37.22852,18.33203 20.56219,4.3e-4 37.23136,-8.20735 37.23047,-18.33203 0.002,-8.628201 0.002,-17.262504 0.002,-25.892583 z"
sodipodi:nodetypes="cccccc"
transform="scale(0.26458333)" />
<ellipse
style="fill:#999999;fill-rule:evenodd;stroke:#000000;stroke-width:0.299721;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path85"
cx="105"
cy="20"
rx="9.8501396"
ry="4.8501391" />
</g>
<path
id="rect3207-6-7"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.100085;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 104.01586,17.365817 -0.80083,-1.832984 -0.92422,0.495281 -5.110858,-2.185507 -1.244995,0.6672 5.110833,2.1855 -0.92424,0.495286 z" />
<path
id="rect3207-6-7-58"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.100085;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 96.424852,21.398238 0.80083,-1.832984 0.92422,0.495281 5.110848,-2.185507 1.245,0.6672 -5.110829,2.1855 0.924239,0.495286 z" />
<path
id="rect3207-6-7-58-2"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.100085;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 113.7356,14.050261 -0.80083,1.832984 -0.92422,-0.495281 -5.11085,2.185507 -1.245,-0.6672 5.11083,-2.1855 -0.92424,-0.495286 z" />
<path
id="rect3207-6-7-5"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.100085;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 106.0668,18.236388 0.80083,1.832984 0.92422,-0.495281 5.11085,2.185507 1.245,-0.6672 -5.11083,-2.1855 0.92424,-0.495286 z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="210mm"
height="297mm"
viewBox="0 0 210 297"
version="1.1"
id="svg5"
inkscape:version="1.1.2 (b8e25be833, 2022-02-05)"
sodipodi:docname="figure_template.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="1.5518659"
inkscape:cx="410.79581"
inkscape:cy="141.12044"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer1">
<inkscape:grid
type="xygrid"
id="grid9"
units="mm"
spacingx="3"
spacingy="3"
empspacing="1"
empcolor="#3f3fff"
empopacity="0.16470588" />
<sodipodi:guide
position="8.9999998,207.00001"
orientation="1,0"
id="guide11" />
<sodipodi:guide
position="201,222.00001"
orientation="1,0"
id="guide13" />
<sodipodi:guide
position="-50.999999,288.00001"
orientation="0,-1"
id="guide15" />
<sodipodi:guide
position="-33,9"
orientation="0,-1"
id="guide17" />
<sodipodi:guide
position="105,306"
orientation="1,0"
id="guide21" />
<sodipodi:guide
position="174,264"
orientation="1,0"
id="guide23" />
<sodipodi:guide
position="36,270"
orientation="1,0"
id="guide25" />
</sodipodi:namedview>
<defs
id="defs2" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1" />
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -0,0 +1,162 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="210mm"
height="297mm"
viewBox="0 0 210 297"
version="1.1"
id="svg5"
inkscape:version="1.1.2 (b8e25be833, 2022-02-05)"
sodipodi:docname="figure_shortcut_example.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="2"
inkscape:cx="591.25"
inkscape:cy="127"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer2"
inkscape:snap-grids="false"
inkscape:snap-to-guides="true">
<inkscape:grid
type="xygrid"
id="grid9"
units="mm"
spacingx="3"
spacingy="3"
empspacing="1"
empcolor="#3f3fff"
empopacity="0.16470588" />
<sodipodi:guide
position="8.9999998,207.00001"
orientation="1,0"
id="guide11" />
<sodipodi:guide
position="201,222.00001"
orientation="1,0"
id="guide13" />
<sodipodi:guide
position="-50.999999,288.00001"
orientation="0,-1"
id="guide15" />
<sodipodi:guide
position="-33,9"
orientation="0,-1"
id="guide17" />
<sodipodi:guide
position="105,306"
orientation="1,0"
id="guide21" />
<sodipodi:guide
position="174,264"
orientation="1,0"
id="guide23" />
<sodipodi:guide
position="36,270"
orientation="1,0"
id="guide25" />
<sodipodi:guide
position="70.5,281.05069"
orientation="-1,0"
id="guide3469"
inkscape:label=""
inkscape:locked="false"
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="91.533129,284.93279"
orientation="0.39073113,0.92050485"
id="guide4503"
inkscape:label=""
inkscape:locked="false"
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="91.533129,281.84583"
orientation="1,0"
id="guide4505" />
<sodipodi:guide
position="74.882238,284.93279"
orientation="0,-1"
id="guide4507" />
<sodipodi:guide
position="118.4739,276.37348"
orientation="1,0"
id="guide4509" />
<sodipodi:guide
position="84.610851,273.4736"
orientation="0,-1"
id="guide4511" />
<sodipodi:guide
position="98.061198,276.29635"
orientation="0.39073113,-0.92050485"
id="guide4745"
inkscape:label=""
inkscape:locked="false"
inkscape:color="rgb(0,0,255)" />
</sodipodi:namedview>
<defs
id="defs2" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2">
<g
id="g4878"
transform="matrix(1.0762508,0,0,1.0766776,-6.9768997,-0.92645566)">
<g
id="g3103"
transform="matrix(1.3704426,0,0,1.1836715,-38.896147,-5.8499835)">
<path
id="path85-5"
style="fill:#999999;fill-rule:evenodd;stroke:#000000;stroke-width:1.1328;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 359.61914,76.154297 c 0.007,8.623005 -0.011,17.290465 0.002,25.892583 -8.9e-4,10.1243 16.66709,18.33193 37.22852,18.33203 20.56219,4.3e-4 37.23136,-8.20735 37.23047,-18.33203 0.002,-8.628201 0.002,-17.262504 0.002,-25.892583 z"
sodipodi:nodetypes="cccccc"
transform="scale(0.26458333)" />
<ellipse
style="fill:#999999;fill-rule:evenodd;stroke:#000000;stroke-width:0.299721;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path85"
cx="105"
cy="20"
rx="9.8501396"
ry="4.8501391" />
</g>
<path
id="rect3207-6-7"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.100085;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 104.01586,17.365817 -0.80083,-1.832984 -0.92422,0.495281 -5.110858,-2.185507 -1.244995,0.6672 5.110833,2.1855 -0.92424,0.495286 z" />
<path
id="rect3207-6-7-58"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.100085;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 96.424852,21.398238 0.80083,-1.832984 0.92422,0.495281 5.110848,-2.185507 1.245,0.6672 -5.110829,2.1855 0.924239,0.495286 z" />
<path
id="rect3207-6-7-58-2"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.100085;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 113.7356,14.050261 -0.80083,1.832984 -0.92422,-0.495281 -5.11085,2.185507 -1.245,-0.6672 5.11083,-2.1855 -0.92424,-0.495286 z" />
<path
id="rect3207-6-7-5"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.100085;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 106.0668,18.236388 0.80083,1.832984 0.92422,-0.495281 5.11085,2.185507 1.245,-0.6672 -5.11083,-2.1855 0.92424,-0.495286 z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

@ -153,13 +153,13 @@
% Abbildungsverzeichnis
\listoffigures
\addcontentsline{toc}{chapter}{Abbildungsverzeichnis}
\addcontentsline{toc}{chapter}{Table of figures}
\listoftables
%Tabellenverzeichnis
\addcontentsline{toc}{chapter}{Tabellenverzeichnis}
\listof{algorithm}{Algorithmenverzeichnis}
\addcontentsline{toc}{chapter}{List of tables}
\listof{algorithm}{List of algorithms}
%Algoritmenverzeichnis
\addcontentsline{toc}{chapter}{Algorithmenverzeichnis}
\addcontentsline{toc}{chapter}{List of algorithms}
%Quelltextverzeichnis
\listof{lstlisting}{Quelltextverzeichnis}
\addcontentsline{toc}{chapter}{Quelltextverzeichnis}