diff --git a/bericht/abschnitte/abschluss.tex b/bericht/abschnitte/abschluss.tex new file mode 100644 index 0000000..4e47f2e --- /dev/null +++ b/bericht/abschnitte/abschluss.tex @@ -0,0 +1,3 @@ +\section{Abschlussaufgaben} + +\input{abschnitte/nftables} \ No newline at end of file diff --git a/bericht/abschnitte/nftables-perf.tex b/bericht/abschnitte/nftables-perf.tex new file mode 100644 index 0000000..c5e772c --- /dev/null +++ b/bericht/abschnitte/nftables-perf.tex @@ -0,0 +1,124 @@ +\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{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{ +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 + +\begin{tikzpicture} + \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} + ] + \addplot[smooth,blue] table {\nftipt}; + \addplot[smooth,red] table {\nftnft}; + \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. + +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. + +\paragraph{iptables} + +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. + +\paragraph{nftables} + +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 diff --git a/bericht/abschnitte/nftables.tex b/bericht/abschnitte/nftables.tex new file mode 100644 index 0000000..b2f7afb --- /dev/null +++ b/bericht/abschnitte/nftables.tex @@ -0,0 +1,3 @@ +\subsection{nftables} + +\input{abschnitte/nftables-perf} \ No newline at end of file diff --git a/bericht/bericht.tex b/bericht/bericht.tex index 0c6c449..d756549 100644 --- a/bericht/bericht.tex +++ b/bericht/bericht.tex @@ -13,6 +13,7 @@ \setlength\epigraphwidth{8cm} \setlength\epigraphrule{0pt} +\usepgfplotslibrary{units} \usepgfplotslibrary{dateplot} \RequirePackage{mymacros} \usepackage{tikz} @@ -53,6 +54,8 @@ \input{abschnitte/bench} +\input{abschnitte/abschluss} + \input{abschnitte/anhang} \end{document}