nftables Performance angefangen

This commit is contained in:
Alfred Krohmer 2014-02-09 17:33:04 +01:00
parent 98e0fead7b
commit 8bbcf7188c
4 changed files with 133 additions and 0 deletions

View File

@ -0,0 +1,3 @@
\section{Abschlussaufgaben}
\input{abschnitte/nftables}

View File

@ -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.

View File

@ -0,0 +1,3 @@
\subsection{nftables}
\input{abschnitte/nftables-perf}

View File

@ -13,6 +13,7 @@
\setlength\epigraphwidth{8cm} \setlength\epigraphwidth{8cm}
\setlength\epigraphrule{0pt} \setlength\epigraphrule{0pt}
\usepgfplotslibrary{units}
\usepgfplotslibrary{dateplot} \usepgfplotslibrary{dateplot}
\RequirePackage{mymacros} \RequirePackage{mymacros}
\usepackage{tikz} \usepackage{tikz}
@ -53,6 +54,8 @@
\input{abschnitte/bench} \input{abschnitte/bench}
\input{abschnitte/abschluss}
\input{abschnitte/anhang} \input{abschnitte/anhang}
\end{document} \end{document}