diff --git a/bericht/abschnitte/nftables/nftables-perf.tex b/bericht/abschnitte/nftables/nftables-perf.tex index c5e772c..e981064 100644 --- a/bericht/abschnitte/nftables/nftables-perf.tex +++ b/bericht/abschnitte/nftables/nftables-perf.tex @@ -1,124 +1,238 @@ \subsubsection{Performance-Vergleich} -Außerdem habe ich iptables unter dem Performance-Aspekt verglichen. Die Benchmarks liefen auf zwei der Zotac-Boards als Nodes und einem Rechner mit Intel Core 2 Duo-Prozessor als Firewall, auf dem die beiden Firewalllösungen liefen um den Datenverkehr zwischen den beiden Nodes zu kontrollieren. +\paragraph{Testaufbau} -\paragraph{Einfache Drop-Regeln} Für den nachfolgenden Benchmark habe ich entsprechend viele Regeln generieren lassen, die besagen, dass von (zufällig gewählten) IP-Adressen alle Pakete gedropt werden sollen. +Um die Performance der beiden Firewall-Lösungen vergleichen zu könne, habe ich jeweils zwei unserer Zotac-Boards mit der Onboard-Netzwerkkarte an einen zusätzlichen Firewall-Rechner, der mir bereitgestellt wurde, verbunden. Die Spezifikationen der Zotac-Boards sind dem Abschnitt »Hardware« zu entnehmen. \\ + +Der zusätzliche Rechner war mit einem Intel Core 2 Duo E6750 mit 2,66 GHz, 2 GiB RAM ausgestattet und zwei Intel Gigabit-Netzwerkkarten ausgestattet (Intel 82566DM-2 und 82572EI). Die beiden Intel-Netzwerkkarten wurden direkt mit den beiden Zotac-Boards verbunden. +Der Firewall-Rechner wurde über die Onboard-Netzwerkkarte und die beiden Zotac-Boards über USB-Netzwerkkarten mit einem Switch und darüber mit der Headnode verbunden um einen Zugriff von außen bereitzustellen. \\ + +Der Firewall-Rechner soll nun über \texttt{iptables} und \texttt{nftables} den Datenverkehr zwischen den beiden Nodes kontrollieren. Die beiden Netzwerk-Interfaces der Firewall waren im Bridge-Modus verbunden. \\ + +\includegraphics{bilder/nft-layout.pdf} + +\paragraph{Verwendete Software} Um schnell genug eine große Anzahl an Paketen pro Sekunde (PPS) erzeugen zu können um die Firewall-Lösungen zu benchmarken, habe ich \texttt{pktgen} verwendet. Hierbei handelt es sich um einen Paketgenerator, der als Kernel-Modul geladen wird und dadurch direkt im Kernel (ohne teure Kontext-Switches ins Userland) ausgeführt wird. + +Zur Überwachung der Messdaten (Datenrate und PPS) habe ich auf allen vier Netzwerkschnittstellen das Tool \texttt{ifpps} aus dem \texttt{netsniff-ng}-Bundle laufen lassen. + +\pagebreak + +\paragraph{Testeinstellung} Zunächst habe ich die Datenrate und die PPS in Abhängigkeit der Ethernet Frame-Größe gemessen um festzustellen, mit welcher Paketgröße die Messungen am besten durchzuführen sind. \\ \\ \pgfplotstableread{ -0 33333 -500 33333 -1000 33333 -1500 33333 -2000 33333 -2500 33333 -3000 33333 -3500 33333 -4000 33333 -4500 31952 -5000 28936 -5500 26422 -6000 24331 -6500 22422 -7000 20868 -7500 19467 -8000 18212 -8500 17109 -9000 16174 -9500 15349 -10000 14621 -10500 13960 -11000 13351 -11500 12781 -12000 12265 -12500 11788 -13000 11346 -13500 10915 -14000 10554 -14500 10187 -15000 9847 -15500 9526 -16000 8772 -16500 8974 -17000 8483 -17500 8433 -18000 8238 -18500 7369 -19000 7371 -19500 7433 -20000 6400 -20500 7074 -21000 5486 -21500 4512 -22000 5172 -22500 5003 -}\nftipt - -\pgfplotstableread{ -0 33333 -500 33333 -1000 33333 -1500 33333 -2000 33333 -2500 29107 -3000 24655 -3500 21367 -4000 18912 -4500 16928 -5000 15318 -5500 13979 -6000 12886 -6500 11973 -7000 11129 -7500 10436 -8000 9823 -8500 9259 -9000 8821 -9500 8371 -10000 7948 -10500 7584 -11000 7256 -11500 6944 -12000 6656 -12500 6410 -13000 6161 -13500 5924 -14000 5696 -14500 5538 -15000 5345 -15500 5160 -16000 5000 -16500 4824 -17000 4720 -17500 4575 -18000 4455 -18500 4221 -19000 4213 -19500 4060 -}\nftnft +size rate pps +1500 986.004 82167 +1450 985.7216 84976 +1400 984.7376 87923 +1350 984.2904 91138 +1300 983.4968 94567 +1250 982.78 98278 +1200 982.08 102300 +1150 981.18 106650 +1100 980.2496 111392 +1050 979.2384 116576 +1000 978.304 122288 +950 977.36 128600 +900 975.0024 135417 +850 974.27 143275 +800 972.5888 151967 +750 970.572 161762 +700 968.3856 172926 +650 966.2328 185814 +600 963.1056 200647 +550 959.7588 218127 +500 955.604 238901 +450 951.588 264330 +400 945.3248 295414 +350 937.3336 334762 +300 923.2584 384691 +250 855.588 427794 +200 662.5952 433335 +150 527.3604 439467 +100 354.96 443700 +50 207.176 446500 +}\sizeratepps \begin{tikzpicture} +\pgfplotsset{ + y axis style/.style={ + yticklabel style=#1, + y axis line style=#1, + ylabel style=#1, + ytick style=#1 + } +} \begin{axis}[ - xmin=0, - xmax=23000, - ymin=0, - xlabel={Anzahl der Firewall-Regeln}, - ylabel={Verarbeitete Pakete pro Sekunde}, width=15cm, height=10cm, - legend entries={iptables,nftables} + title=Sender, + xmin=1, + xmax=1500, + xlabel={Ethernet Frame-Größe}, + xtick={100,300,500,700,900,1100,1300,1500}, + ymin=0, + axis y line*=left, + ylabel={Datenrate [MBit/s]}, + y axis style=blue!75!black, + tick label style={/pgf/number format/fixed,/pgf/number format/1000 sep = \thinspace}, + scaled ticks=false ] - \addplot[smooth,blue] table {\nftipt}; - \addplot[smooth,red] table {\nftnft}; + \addplot[smooth,blue] table[x={size}, y={rate}] {\sizeratepps}; + \end{axis} + \begin{axis}[ + width=15cm, height=10cm, + xmin=1, + xmax=1500, + axis x line=none, + ymin=0,ymax=500000, + ytick pos=right, + axis y line* = right, + ylabel={PPS}, + ylabel near ticks, + ytick={100000,200000,300000,400000}, + y axis style=red!75!black, + tick label style={/pgf/number format/fixed,/pgf/number format/1000 sep = \thinspace}, + scaled ticks=false + ] + \addplot[smooth,red] table[x={size}, y={pps}] {\sizeratepps}; \end{axis} \end{tikzpicture} -Die maximale PPS(packages-per-second)-Rate liegt initial bei 33333 Paketen pro Sekunde, da ich als Delay zwischen den einzelnen Paketen 30 $\mu$s eingestellt habe. Bei einem kleineren Delay wurde bereits Pakete an der Netzwerkkarte der Firewall gedropt. +\vspace{1cm} -Es wurden Paketgrößen von einer Größe von 1 bis 1500 Byte (MTU des Ethernet) verwendet, diese hatten allerdings keinen Einfluss auf die PPS, da bei den verwendeten Regeln nur die IP-Header in Betracht gezogen wurden und die Sättigung (an Datenübertragungsrate) der Netzwerkkarte längst nicht erreicht wurde. +\pgfplotstableread{ +size rate pps +1500 982.38 81865 +1450 981.1512 84582 +1400 983.4272 87806 +1350 981.936 90920 +1300 979.9816 94229 +1250 977.44 97744 +1200 980.7936 102166 +1150 978.5396 106363 +1100 975.6472 110869 +1050 972.3588 115757 +1000 977.192 122149 +950 974.0312 128162 +900 970.6896 134818 +850 965.4368 141976 +800 970.8992 151703 +750 966.756 161126 +700 960.9544 171599 +650 956.2592 183896 +600 961.4736 200307 +550 954.8088 217002 +500 946.992 236748 +450 928.7784 257994 +400 823.2672 257271 +350 722.5316 258047 +300 615.1632 256318 +250 492.206 246103 +200 406.3824 253989 +150 299.2116 249343 +100 205.8888 257361 +50 123.79728 257911 -\paragraph{iptables} +}\sizerateppsrecv -Wie aus dem Diagramm ersichtlich wird, bricht die PPS-Rate ab ca. 5000 Regeln exponentiell ein und strebt ca. 5000 PPS an. Ab ca. 23000 Regeln werden wieder Pakete an der Firewall gedropt, weil die Pakete nicht schnell genug verarbeitet werden können. +\begin{tikzpicture} +\pgfplotsset{ + y axis style/.style={ + yticklabel style=#1, + y axis line style=#1, + ylabel style=#1, + ytick style=#1 + } +} + \begin{axis}[ + width=15cm, height=10cm, + title=Empfänger, + xmin=1, + xmax=1500, + xlabel={Ethernet Frame-Größe}, + xtick={100,300,500,700,900,1100,1300,1500}, + ymin=0, + axis y line*=left, + ylabel={Datenrate [MBit/s]}, + y axis style=blue!75!black, + tick label style={/pgf/number format/fixed,/pgf/number format/1000 sep = \thinspace}, + scaled ticks=false + ] + \addplot[smooth,blue] table[x={size}, y={rate}] {\sizerateppsrecv}; + \end{axis} + \begin{axis}[ + width=15cm, height=10cm, + xmin=1, + xmax=1500, + axis x line=none, + ymin=0,ymax=500000, + ytick pos=right, + axis y line* = right, + ylabel={PPS}, + ylabel near ticks, + ytick={100000,200000,300000,400000}, + y axis style=red!75!black, + tick label style={/pgf/number format/fixed,/pgf/number format/1000 sep = \thinspace}, + scaled ticks=false + ] + \addplot[smooth,red] table[x={size}, y={pps}] {\sizerateppsrecv}; + \end{axis} +\end{tikzpicture} -\paragraph{nftables} +\pagebreak -Der Graph verläuft von der Form her grundsätzlich genau wie bei iptables, jedoch ist nftables offensichtlich noch erheblich langsamer als iptables. Die PPS-Rate beginnt schon bei ca. 2500 Regeln einzubrechen und bereits ab 20000 Regeln werden Pakete gedropt. \ No newline at end of file +Wie aus den Diagrammen ersichtlich wird, wird bei Frame-Größen, die an die MTU des Ethernets (1500 Bytes) heranreichen, das Gigabit-Netzwerk mit ca. 980 MBit/s und ca. 82000 PPS fast komplett ausgereizt. Je kleiner die Frame-Größe wird, desto größer wird zunächst die Anzahl der PPS, da das Netzwerk immer noch gut ausgelastet wird; die Datenrate sinkt zunächst zur langsam. \\ + +Beim Sender beginnt jedoch bei Frame-Größe kleiner 300 Byte die Datenrate linear zu sinken. Die PPS stagnieren dann bei ca. 450000 Paketen. Dies ist mit der Leistungsfähigkeit der Atom-Prozessoren zu erklären, da diese ab dieser Grenze komplett ausgelastet sind und die Pakete nicht schneller erzeugen können. \\ + +Beim Empfänger geschieht dieser Einbrauch schon bei ca. 450 Byte Frame-Größe. Hier stagniert die PPS bei ca. 250000. Auch dies lässt sich mit der Auslastung des Prozessors erklären. Der Unterschied zum Sender besteht darin, dass bei diesem die Pakete lediglich statisch zusammengesetzt und losgeschickt werden müssen. Beim Empfänger hingegen muss das Betriebssystem die Pakete zunächst auswerten, was den Bearbeitungszeit verlängert. Dadurch kommen beim Empfänger wesentlich weniger Pakete an, als der Sender losschickt. (Die übrigen Pakete werden gedroppt.) \\ + +Um eine größtmögliche Auslastung des Gigabit-Netzwerkes zu ermöglichen und gleichzeitig die maximale Anzahl an PPS zu erhalten, habe ich also für die folgenden Benchmarks die Ethernet Frame-Größe auf 450 festgesetzt. + +\paragraph{Anfängliche Probleme} Anfangs habe ich auf dem Empfänger keine »Anwendung« laufen lassen, die die Pakete des Senders entgegennimmt. Deshalb musste der Kernel zusätzliche ein ICMP-Paket mit »Connection Refused«-Flag an den Sender zurückschicken und daraufhin weitere Fehlerbehandlungen durchführen. Auf diese Weise habe ich am Empfänger zunächst nur ca. 110000 PPS empfangen können. Als Lösungsansatz habe ich dann \texttt{netcat} auf dem Port am Empfänger laufen lassen und die Daten nach \texttt{/dev/null} umgeleitet. Damit kamen keine Fehler mehr zustande und es konnten ca. 150000 PPS empfangen werden. Dies liegt jedoch immer noch weit unter den am Sender losgeschickten 450000 PPS und ist damit zu erklären, dass es für jedes Paket zu einem Kontex-Switch vom Kernel zu \texttt{netcat} kam und deshalb wieder die Bearbeitungszeit pro Paket stieg. \\ + +Letztendlich habe ich dazu entschieden, auf der Empfängerseite mit \texttt{iptables} die Pakete, die auf dem entsprechenden Port angekommen, direkt zu droppen. Damit konnten nun die zuvor erwähnten ca. 250000 PPS empfangen werden. + +\pagebreak + +\paragraph{Einfache Drop-Regeln} Für den nachfolgenden Benchmark habe ich entsprechend viele Regeln generieren lassen, die besagen, dass von (zufällig gewählten) IP-Adressen alle Pakete gedropt werden sollen. \\ + +\pgfplotstableread{benchmarks/nft/ipt-nft-simple-drop.txt}{\nftsimpledrop} + +\begin{minipage}{\textwidth} +\flushright +\begin{tikzpicture} + \begin{axis}[ + name=plot1, + xtick={5000,10000,15000,20000,25000,30000}, + xmin=200, xmax=30000, + ymin=0, + xlabel={Anzahl der Firewall-Regeln}, ylabel={Datenrate [MBit/s]}, + tick label style={/pgf/number format/fixed,/pgf/number format/1000 sep = \thinspace}, + width=15cm, height=10cm, + legend entries={iptables,nftables}, + scaled ticks=false + ] + \addplot[smooth,blue] table [x={rules}, y={iptrate}] {\nftsimpledrop}; + \addplot[smooth,red] table [x={rules}, y={nftrate}] {\nftsimpledrop}; + \end{axis} + + \begin{axis}[ + name=plot2, + at=(plot1.below south), anchor=above north, + yshift=-0.5cm, + xtick={5000,10000,15000,20000,25000,30000}, + xmin=200, xmax=30000, + ymin=0, + xlabel={Anzahl der Firewall-Regeln}, ylabel={PPS}, + tick label style={/pgf/number format/fixed,/pgf/number format/1000 sep = \thinspace}, + width=15cm, height=10cm, + legend entries={iptables,nftables}, + scaled ticks=false + ] + \addplot[smooth,blue] table [x={rules}, y={iptpps}] {\nftsimpledrop}; + \addplot[smooth,red] table [x={rules}, y={nftpps}] {\nftsimpledrop}; + \end{axis} +\end{tikzpicture} +\end{minipage} \\ + +Die Datenrate und die Anzahl an PPS liegen initial bei den bereits zuvor gemessenen ca. 980 MBit/s und 250000 Paketen pro Sekunde. Jedoch bricht die Leistungsfähigkeit bei beiden Firewall-Lösungen schnell erheblich ein. So kann \texttt{iptables} bei 5000 Regeln nur noch ca. 100 MBit/s bei 28000 Paketen verarbeiten, \texttt{nftables} schafft hier nur ca. 50 MBit/s bei 14000 Paketen. \ No newline at end of file diff --git a/bericht/abschnitte/nftables/nftables-tools.tex b/bericht/abschnitte/nftables/nftables-tools.tex new file mode 100644 index 0000000..cb57056 --- /dev/null +++ b/bericht/abschnitte/nftables/nftables-tools.tex @@ -0,0 +1,5 @@ +\subsubsection{Verfügbare Tools} + +Da nftables erst vor kurzem Einzug in den Linux-Kernel gehalten hat, gibt es in noch keiner Linux-Distribution entsprechende Tools für die Konfiguration der neuen Firewall-Lösung. Man hat also nur die Möglichkeit, sich die Userland-Programme selbst zu kompilieren. (Bei Arch Linux waren diese bereits im AUR vorhanden, nicht jedoch im offizielen Repository.) + +Das zentrale Tool zur Konfiguration stellt hier \texttt{nft} dar. Die Syntax wurde im vorherigen Abschnitt bereits demonstriert. \ No newline at end of file diff --git a/bericht/abschnitte/nftables/nftables-vs.tex b/bericht/abschnitte/nftables/nftables-vs.tex new file mode 100644 index 0000000..eb974c0 --- /dev/null +++ b/bericht/abschnitte/nftables/nftables-vs.tex @@ -0,0 +1,47 @@ +\subsubsection{Rückblick} + +Da es bereits vor \texttt{nftables} und \texttt{iptables} mehrere Firewall-Implementierungen für Linux gab, lohnt sich ein kleiner Rückblick. + +\begin{itemize} +\item ab Kernel 1.0 (1994): \texttt{ipfw} (IP FireWall), von FreeBSD auf Linux portiert +\item ab Kernel 2.0 (1996): \texttt{ipfwadm} (IP FireWall Admin) +\item ab Kernel 2.2 (1999): \texttt{ipchains} +\item ab Kernel 2.3 (2000): \texttt{iptables} +\item ab Kernel 3.13 (2014): \texttt{nftables} +\end{itemize} + +Wie man sieht mussten sich Linux-Nutzer, die eine Firewall benötigten, seit 1994 bis jetzt mit vier verschiedenen Firewall-Lösungen auseinander setzen. Die letzte davon, \texttt{iptables} ist nun bald seit 14 Jahr im Einsatz und soll jetzt auf Dauer von \texttt{nftables} abgelöst werden. + +\subsubsection{Funktionsweise} + +\paragraph{\texttt{iptables}} selbst ist nur für das Firewalling des IPv4-Traffics verantwortlich. Für andere Protokolle gibt es weitere entsprechende Tools: +\begin{itemize} +\item \textbf{\texttt{ip6tables}} für IPv6 +\item \textbf{\texttt{arptables}} für ARP (Address Resolution Protocol, zu IP-Adressen werden im lokalen Subnetz MAC-Adressen abgefragt, um Ethernet-Pakete versenden zu können) +\item \textbf{\texttt{ebtables}} für Ethernet Bridging +\end{itemize} + +Alle diese Tools haben im Linux-Kernel eine Entsprechung in der Netfilter-Infrastruktur. An dieser Stelle sind für jedes Protokoll alle möglichen Filterkriterien und -aktionen einzeln im Kernel (meist als Modul ladbar) implementiert. Da diese Implementierungen alle sehr protokollspezifisch sind, sorgte dies dafür, dass enorm viel Code für jedes Protokoll repliziert werden musste. + +\paragraph{\texttt{nftables}} soll alle Implementierungen für die verschiedenen Protokolle zusammenfassen und damit die Schnittstelle der Konfigurationstools zum Kernel vereinfachen, die Code-Replikation verringern und ein effizienteres Abarbeiten der Regeln gewährleisten. + +Dies wird durch den Einsatz einer kleinen virtuellen Maschine im Kernel gewährleistet. Im Gegensatz zu \texttt{iptables}, wo für jedes Filterkriterium einer Regel eine eigene Funktion im Kernel aufgerufen wurde, wird nun das zu verarbeitende Paket geladen und die zu Byte-Code kompilierten Regeln in der virtuellen Maschine angewendet. Dieser Code kann nun einzelne Felder und Bits eines Pakets betrachten und vergleichen, arithmetische Operationen darauf ausführen und das Paket ändern. + +Darüber hinaus soll nun ein atomares Austauschen der Firewall-Regeln in einer einzelnen Netlink-Transaktion möglich sein. (Netlink ist die Schnittstelle zum Kernel, mit der die Netfilter-Infrastruktur angesprochen wird; dies ist die bisher schnellste Schnittstelle zum Kernel, besonders wenn große Mengen an Daten übertragen werden sollen) Dies funktioniert bisher allerdings noch nicht effektiv, weil das Userspace-Tool \texttt{nft} noch keine Möglichkeit bietet, alle bereits existenten Regeln zu entfernen und gleichzeitig die aktualisierte Fassung der Regeln zu laden. (Man müsste hier für jede Regel-Aktualisierung, die man durchführen will, ein eigenes nft-Script schreiben, dass zunächst die alte Regel entfernt und eine neue hinzufügt. Diese Aktualisierung ist dann atomar.) + +\subsubsection{table, chain, hook} + +Während \texttt{iptables} noch vordefinierte Tabellen (\texttt{filter}, \texttt{nat}, \texttt{mangle}, etc.) und mehrere Chains (\texttt{PREROUTING}, \texttt{INPUT}, \texttt{FORWARD}, \texttt{OUTPUT}, \texttt{POSTROUTING}) in diesen Tabellen hatte, gibt es in \texttt{nftables} keine vorgefertigen Tabellen und Chains mehr. Stattdessen gibt es sogenannte Hooks, in die man sich in selbst erstellten Chains »einhängen« kann. Dabei kann man eine Priorität angeben, die die Reihenfolge der Abarbeitung der Chains angibt. Diese Hooks entsprechen dabei größtenteils den Tabellen und Chains aus \texttt{iptables}. + +\subsubsection{Syntax} + +Für \texttt{iptables} könnte man bspw. folgenden Aufruf verwende, um eingehende TCP-Pakete auf Port 22 zunächst zu loggen und anschließend zu verwerfen: \\ +\shellcmd{iptables -A INPUT -p tcp ---dport 22 -j LOG} \\ +\shellcmd{iptables -A INPUT -p tcp ---dport 22 -j DROP} \\ + +Für \texttt{nftables} müsste man sich zunächst mit folgenden Befehlen je eine beispielhafte Tabelle und Chain anlegen (oder dies entsprechend in ein Script einbauen): \\ +\shellcmd{nft add table filter} \\ +\shellcmd{nft add chain filter input \enquote{\{ type filter hook input priority 0; \}}} \\ + +Die Regel kann man nun bspw. wie folgt einfügen: \\ +\shellcmd{nft add rule filter input tcp dport 80 log drop} \ No newline at end of file diff --git a/bericht/abschnitte/nftables/nftables.tex b/bericht/abschnitte/nftables/nftables.tex index 90fd5ad..f847b2d 100644 --- a/bericht/abschnitte/nftables/nftables.tex +++ b/bericht/abschnitte/nftables/nftables.tex @@ -1,3 +1,5 @@ -\subsection{nftables} +\subsection{Vergleich \texttt{nftables} und \texttt{iptables}} +\input{abschnitte/nftables/nftables-vs} +\input{abschnitte/nftables/nftables-tools} \input{abschnitte/nftables/nftables-perf} \ No newline at end of file diff --git a/bericht/benchmarks/nft/ipt-nft-simple-drop.txt b/bericht/benchmarks/nft/ipt-nft-simple-drop.txt new file mode 100644 index 0000000..4ea4b34 --- /dev/null +++ b/bericht/benchmarks/nft/ipt-nft-simple-drop.txt @@ -0,0 +1,302 @@ +rules iptrate iptpps nftrate nftpps +0 905.148 251430 924.588 256830 +100 934.9704 259714 905.9544 251654 +200 933.3396 259261 705.5856 195996 +300 843.2568 234238 537.174 149215 +400 730.9116 203031 443.4588 123183 +500 647.1468 179763 374.3748 103993 +600 557.406 154835 334.7244 92979 +700 525.5856 145996 292.1184 81144 +800 480.3156 133421 267.714 74365 +900 441.8676 122741 240.5988 66833 +1000 408.9024 113584 228.6072 63502 +1100 381.7836 106051 204.9336 56926 +1200 356.7888 99108 196.7832 54662 +1300 335.3148 93143 181.1232 50312 +1400 315.5616 87656 170.406 47335 +1500 299.898 83305 160.8192 44672 +1600 284.9688 79158 149.4864 41524 +1700 271.2312 75342 141.9264 39424 +1800 258.876 71910 135.162 37545 +1900 245.4048 68168 130.4604 36239 +2000 236.5416 65706 123.1056 34196 +2100 227.25 63125 118.1772 32827 +2200 218.0988 60583 113.526 31535 +2300 210.2508 58403 109.0476 30291 +2400 201.4596 55961 104.67 29075 +2500 195.5952 54332 100.8108 28003 +2600 189.0144 52504 97.4592 27072 +2700 182.808 50780 94.1076 26141 +2800 176.7708 49103 90.9324 25259 +2900 170.7156 47421 88.3116 24531 +3000 166.4568 46238 85.3992 23722 +3100 161.7732 44937 83.2392 23122 +3200 157.1112 43642 80.4708 22353 +3300 152.5716 42381 78.1848 21718 +3400 148.7088 41308 75.996 21110 +3500 144.8892 40247 74.0916 20581 +3600 141.21 39225 72.2016 20056 +3700 137.7 38250 70.2036 19501 +3800 134.3664 37324 69.2856 19246 +3900 131.0976 36416 67.6188 18783 +4000 128.2104 35614 66.078 18355 +4100 125.4744 34854 64.8216 18006 +4200 121.7844 33829 62.9496 17486 +4300 120.0672 33352 61.8336 17176 +4400 117.4572 32627 60.1596 16711 +4500 115.0632 31962 59.1948 16443 +4600 112.7124 31309 57.6792 16022 +4700 110.1096 30586 56.9376 15816 +4800 108.2916 30081 55.4868 15413 +4900 106.1712 29492 54.666 15185 +5000 104.1588 28933 53.3268 14813 +5100 102.5316 28481 52.686 14635 +5200 99.882 27745 51.4188 14283 +5300 98.6148 27393 50.6736 14076 +5400 96.7536 26876 49.5864 13774 +5500 95.0436 26401 48.9348 13593 +5600 93.7476 26041 47.8044 13279 +5700 91.6668 25463 47.3076 13141 +5800 90.2556 25071 46.17 12825 +5900 88.542 24595 45.6876 12691 +6000 87.444 24290 44.7948 12443 +6100 85.77 23825 44.1792 12272 +6200 84.4632 23462 43.9668 12213 +6300 83.1204 23089 43.4304 12064 +6400 81.7308 22703 42.6312 11842 +6500 80.7732 22437 42.1272 11702 +6600 79.326 22035 41.3028 11473 +6700 78.4368 21788 40.8888 11358 +6800 77.1768 21438 40.1796 11161 +6900 76.0716 21131 39.7764 11049 +7000 74.9376 20816 39.1392 10872 +7100 73.8288 20508 38.7144 10754 +7200 72.9576 20266 38.0916 10581 +7300 71.6868 19913 37.5192 10422 +7400 70.8948 19693 37.0764 10299 +7500 69.8112 19392 36.6012 10167 +7600 68.76 19100 36.1836 10051 +7700 67.9356 18871 35.7192 9922 +7800 67.1544 18654 35.1216 9756 +7900 66.3228 18423 35.0424 9734 +8000 65.5164 18199 34.452 9570 +8100 64.7136 17976 34.1208 9478 +8200 63.7632 17712 33.6888 9358 +8300 62.8956 17471 33.3468 9263 +8400 62.3088 17308 32.9328 9148 +8500 61.5744 17104 32.3748 8993 +8600 60.7428 16873 32.0544 8904 +8700 60.0732 16687 31.8816 8856 +8800 59.3424 16484 31.3884 8719 +8900 58.7412 16317 30.9672 8602 +9000 58.1184 16144 30.618 8505 +9100 57.4812 15967 30.402 8445 +9200 56.9052 15807 29.9808 8328 +9300 56.3076 15641 29.88 8300 +9400 55.7136 15476 29.232 8120 +9500 55.1412 15317 29.1168 8088 +9600 54.612 15170 28.8288 8008 +9700 54.0072 15002 28.6416 7956 +9800 53.568 14880 28.278 7855 +9900 53.01 14725 28.1196 7811 +10000 52.524 14590 27.7812 7717 +10100 52.038 14455 27.5184 7644 +10200 51.4728 14298 27.216 7560 +10300 51.0516 14181 27.0144 7504 +10400 50.562 14045 26.6976 7416 +10500 50.1084 13919 26.586 7385 +10600 49.5972 13777 26.0964 7249 +10700 49.068 13630 26.0388 7233 +10800 48.7368 13538 25.7148 7143 +10900 48.3372 13427 25.6104 7114 +11000 47.8656 13296 25.1892 6997 +11100 47.4372 13177 25.2216 7006 +11200 47.0268 13063 24.93 6925 +11300 46.6272 12952 24.7428 6873 +11400 46.224 12840 24.4764 6799 +11500 45.9 12750 24.2568 6738 +11600 45.4392 12622 23.9616 6656 +11700 45.0864 12524 23.868 6630 +11800 44.7552 12432 23.5476 6541 +11900 44.3484 12319 23.508 6530 +12000 43.9632 12212 23.2344 6454 +12100 43.6212 12117 23.0904 6414 +12200 43.2576 12016 22.8276 6341 +12300 42.9192 11922 22.7052 6307 +12400 42.588 11830 22.4568 6238 +12500 42.2748 11743 22.4316 6231 +12600 41.904 11640 22.086 6135 +12700 41.4396 11511 22.1112 6142 +12800 41.3028 11473 21.8196 6061 +12900 40.932 11370 21.8196 6061 +13000 40.5792 11272 21.456 5960 +13100 39.9996 11111 21.4488 5958 +13200 40.0896 11136 21.1356 5871 +13300 39.7188 11033 21.186 5885 +13400 39.4992 10972 20.844 5790 +13500 38.9052 10807 20.7972 5777 +13600 38.8656 10796 20.6316 5731 +13700 38.6424 10734 20.4876 5691 +13800 38.4012 10667 20.3544 5654 +13900 37.908 10530 20.2464 5624 +14000 37.818 10505 20.0952 5582 +14100 37.5264 10424 19.9512 5542 +14200 37.3068 10363 19.8 5500 +14300 36.7632 10212 19.6776 5466 +14400 36.756 10210 19.512 5420 +14500 36.2448 10068 19.404 5390 +14600 35.8848 9968 19.224 5340 +14700 35.5932 9887 19.152 5320 +14800 35.8596 9961 18.9576 5266 +14900 35.5932 9887 18.936 5260 +15000 35.3448 9818 18.7524 5209 +15100 34.9992 9722 18.5508 5153 +15200 34.83 9675 18.4536 5126 +15300 34.5312 9592 18.3888 5108 +15400 34.4376 9566 18.2268 5063 +15500 34.1496 9486 18.09 5025 +15600 33.948 9430 18.0396 5011 +15700 33.786 9385 17.8884 4969 +15800 33.5592 9322 17.8056 4946 +15900 33.39 9275 17.55 4875 +16000 33.156 9210 17.586 4885 +16100 32.9472 9152 17.4744 4854 +16200 30.1572 8377 17.37 4825 +16300 32.3748 8993 17.1792 4772 +16400 28.692 7970 17.154 4765 +16500 32.2236 8951 17.0856 4746 +16600 29.9196 8311 16.9596 4711 +16700 31.5864 8774 16.7976 4666 +16800 29.4768 8188 16.722 4645 +16900 31.4136 8726 16.578 4605 +17000 30.9924 8609 16.542 4595 +17100 30.8988 8583 16.2288 4508 +17200 26.5284 7369 16.3656 4546 +17300 29.8476 8291 16.2648 4518 +17400 29.7612 8267 16.1064 4474 +17500 29.8224 8284 16.1136 4476 +17600 29.682 8245 16.0164 4449 +17700 28.278 7855 15.9084 4419 +17800 27.0648 7518 15.8256 4396 +17900 28.8036 8001 15.7248 4368 +18000 28.6632 7962 15.588 4330 +18100 29.2104 8114 15.5376 4316 +18200 29.0124 8059 15.0948 4193 +18300 28.9476 8041 15.3936 4276 +18400 28.1844 7829 15.0948 4193 +18500 28.638 7955 15.2028 4223 +18600 19.944 5540 15.1236 4201 +18700 26.8704 7464 14.9976 4166 +18800 26.4636 7351 14.5404 4039 +18900 27.2916 7581 14.904 4140 +19000 19.4472 5402 14.8284 4119 +19100 20.7324 5759 14.6124 4059 +19200 27.0036 7501 14.6268 4063 +19300 17.2404 4789 14.6124 4059 +19400 18.7884 5219 14.5512 4042 +19500 22.6368 6288 14.3208 3978 +19600 21.006 5835 14.3532 3987 +19700 22.6908 6303 13.7556 3821 +19800 21.2328 5898 13.968 3880 +19900 20.4264 5674 14.1336 3926 +20000 23.7816 6606 13.2408 3678 +20100 26.2836 7301 13.8384 3844 +20200 23.814 6615 13.4208 3728 +20300 20.9592 5822 13.698 3805 +20400 17.3592 4822 13.7628 3823 +20500 18.8928 5248 13.752 3820 +20600 25.1712 6992 13.6584 3794 +20700 24.9048 6918 12.9924 3609 +20800 21.7872 6052 13.4676 3741 +20900 16.7508 4653 13.32 3700 +21000 22.6332 6287 13.3884 3719 +21100 19.2132 5337 13.3308 3703 +21200 19.1808 5328 12.9348 3593 +21300 21.3732 5937 12.7548 3543 +21400 18.8496 5236 13.2048 3668 +21500 18.6732 5187 13.1148 3643 +21600 17.2656 4796 12.906 3585 +21700 14.2308 3953 12.9456 3596 +21800 14.796 4110 12.9384 3594 +21900 14.04 3900 12.8232 3562 +22000 23.0292 6397 12.7872 3552 +22100 13.2192 3672 11.8332 3287 +22200 23.3568 6488 12.3624 3434 +22300 14.0364 3899 10.9944 3054 +22400 14.7132 4087 11.9304 3314 +22500 17.4312 4842 12.51 3475 +22600 14.5548 4043 12.4272 3452 +22700 11.772 3270 11.7792 3272 +22800 19.422 5395 12.3768 3438 +22900 11.682 3245 11.4156 3171 +23000 11.1456 3096 11.9376 3316 +23100 14.904 4140 11.3868 3163 +23200 13.6476 3791 11.8008 3278 +23300 10.2564 2849 11.3364 3149 +23400 12.5064 3474 10.8108 3003 +23500 14.364 3990 10.8756 3021 +23600 12.1356 3371 10.8576 3016 +23700 11.5596 3211 10.9152 3032 +23800 12.996 3610 10.6308 2953 +23900 12.42 3450 11.3472 3152 +24000 11.7396 3261 11.4192 3172 +24100 17.6688 4908 10.728 2980 +24200 10.854 3015 10.5372 2927 +24300 11.7216 3256 10.5624 2934 +24400 12.3876 3441 10.4148 2893 +24500 12.0024 3334 11.0304 3064 +24600 12.5964 3499 10.2636 2851 +24700 14.8824 4134 10.4652 2907 +24800 10.7748 2993 9.7776 2716 +24900 10.2492 2847 9.9 2750 +25000 10.8828 3023 9.9288 2758 +25100 9.4032 2612 9.936 2760 +25200 11.0556 3071 10.3032 2862 +25300 9.828 2730 10.9008 3028 +25400 9.4608 2628 9.7452 2707 +25500 9.2808 2578 9.846 2735 +25600 8.5176 2366 9.99 2775 +25700 9.3672 2602 9.18 2550 +25800 8.442 2345 9.3456 2596 +25900 9.9828 2773 9.756 2710 +26000 10.3824 2884 9.7956 2721 +26100 8.2152 2282 9.4428 2623 +26200 7.6284 2119 10.4436 2901 +26300 10.7316 2981 10.0692 2797 +26400 9.2232 2562 9.5256 2646 +26500 8.1936 2276 9.324 2590 +26600 8.2008 2278 9.5292 2647 +26700 8.658 2405 8.7084 2419 +26800 7.6104 2114 9.2664 2574 +26900 8.1576 2266 9.144 2540 +27000 9.4428 2623 8.8596 2461 +27100 7.5384 2094 8.3988 2333 +27200 7.4808 2078 8.6472 2402 +27300 7.0272 1952 8.6292 2397 +27400 6.8868 1913 9.5292 2647 +27500 6.984 1940 9.2268 2563 +27600 6.6384 1844 8.2692 2297 +27700 6.5736 1826 8.4348 2343 +27800 6.8184 1894 8.7264 2424 +27900 6.9192 1922 8.6148 2393 +28000 6.1704 1714 8.91 2475 +28100 6.6564 1849 8.5068 2363 +28200 5.7168 1588 7.9632 2212 +28300 6.408 1780 8.1432 2262 +28400 6.8076 1891 8.0352 2232 +28500 5.6448 1568 8.0388 2233 +28600 6.7788 1883 8.3556 2321 +28700 6.2388 1733 7.7112 2142 +28800 5.7708 1603 7.866 2185 +28900 6.0876 1691 7.5312 2092 +29000 5.7168 1588 7.8408 2178 +29100 5.5044 1529 7.8696 2186 +29200 5.6124 1559 7.3548 2043 +29300 5.4864 1524 7.1928 1998 +29400 5.2164 1449 7.002 1945 +29500 5.148 1430 7.3584 2044 +29600 5.4504 1514 7.3728 2048 +29700 5.0796 1411 7.7904 2164 +29800 5.166 1435 7.0056 1946 +29900 5.4144 1504 7.2072 2002 +30000 5.3352 1482 6.75 1875 diff --git a/bericht/bericht.tex b/bericht/bericht.tex index b05ca27..a3d714b 100644 --- a/bericht/bericht.tex +++ b/bericht/bericht.tex @@ -8,6 +8,7 @@ \usepackage{courier} \usepackage{microtype} \usepackage{pgfplots} +\pgfplotsset{compat=1.3} \usepackage{epigraph} \setlength\epigraphwidth{8cm} @@ -18,6 +19,8 @@ \RequirePackage{mymacros} \usepackage{tikz} \usepackage{pgfplotstable} +\usepackage{csquotes} +\usepackage{float} \lstset{basicstyle=\footnotesize\ttfamily,breaklines=true,xleftmargin=1cm} diff --git a/bericht/bilder/nft-layout.dia b/bericht/bilder/nft-layout.dia new file mode 100644 index 0000000..f48d892 Binary files /dev/null and b/bericht/bilder/nft-layout.dia differ diff --git a/bericht/bilder/nft-layout.pdf b/bericht/bilder/nft-layout.pdf new file mode 100644 index 0000000..fe11d01 Binary files /dev/null and b/bericht/bilder/nft-layout.pdf differ diff --git a/bericht/bilder/nft-layout.svg b/bericht/bilder/nft-layout.svg new file mode 100644 index 0000000..8efb442 --- /dev/null +++ b/bericht/bilder/nft-layout.svg @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + zotac-firewall + + + + + + + + + + + + + + + + + + + + + + + + + + zotac3 + + + + + + + + + + + + + + + + + + + + + + + + + + zotac4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + zotac0 + + + + + 1 GBit/s + + + 1 GBit/s + +