Gigabit-fähige Netzwerkschnittstellen findet man seit langem eigentlich an so gut wie jedem Gerät. In Folge hat man dann immer die Erwartung, das diese Geschwindigkeit zumindest annähernd erreicht wird.

Allerdings ist die Netzwerkkarte alleine kein Erfolgsgarant, sondern vielmehr nur ein Glied in der Kette. Die restliche Hardware sowie die Software sowie deren Konfiguration müssen ebenso mitspielen.

Als Beispiel dient ein segmentiertes Netzwerk, bei dem der Durchsatz zwischen zwei Abteilungen “lediglich” etwas mehr als 400 Mbit/s entsprach. Nun, da gibt es sehr viel schlechteres, aber natürlich auch besseres.

Trotz mehrerer Gigabit-Netzwerkkarten wollte nicht mehr durchkommen, ganz gleich mit welchem Protokoll oder Test.

Woran kann es liegen?

Grundsätzlich gibt es mehrere mögliche Ursachen für einen solchen Flaschenhals. Das fängt ggf. schon bei alten oder angeknacksten Kabeln an. Die Duplex-Einstellungen, vor allem wenn die Automatik nicht richtig mitspielt wäre das Nächste.

Je nach Firewall oder UTM kommt es auch darauf an, wie Tief in die Pakete hineingeblickt wird und ob weitere Filter eingreifen bzw. auf dem gleichen System laufen. Ein Beispiel wäre ein Proxy-Server samt Virenschutz. Generell kommt es zudem darauf an, ob die Firewall wirklich nur Firewall und Routing macht oder noch mehr Aufgaben ausführt, z.B. Mails abholen und scannen, IDS/IPS, usw.

Wie findet man den Flaschenhals?

Konnte man den möglichen Flaschenhals schon mal direkt auf die Firewall eingrenzen ist das schonmal etwas. Als nächstes sollte man prüfen, ob nicht beispielsweise Traffic Shaping aktiv ist.

Ist das soweit nicht der Fall ist zu prüfen, ob es an der Netzwerkkarten-Konfiguration liegt. Je nach Hersteller und Modell gibt es dazu weitere Punkte zu beachten:

Netgate – Docs – Tuning and Troubleshooting Network Cards

In diesem Szenario brachte das Tuning wie in dieser Anleitung beschrieben, auch wenn es sich um abweichende Hardware handelt, bereits etwas:

TekLager – How to fine-tune pfSense 2.4.5 for 1Gbit throughput on APU2/APU3/APU4

Statt der etwas mehr als 400 Mbit/s lag man nun bereits bei ca. 640 MBit/s.

Reicht das soweit noch nicht geht es schließlich an die Kern-Hardware, genau genommen die CPU sowie der PCI-E-Bus. Sind diese zu schwach bzw. bringen nicht die nötige Leistung kann schlichtweg nicht der erwartete oder benötigte Durchsatz erreicht werden:

Netgate – Docs – Troubleshooting Low Interface Throughput

Im vorliegenden Szenario schaute man zuerst auf die Gesamtauslastung der pfSense via Web-Interface, diese war dort selbst während des Tests knapp unter 40%. Allerdings ist das nicht wirklich Aussagekräftig. Relevanter ist da entweder an der Console oder via ssh und folgendem Befehl die Auslastung der Kerne zu betrachten:

top -aSH

Bei dem genannten System sah die Ausgabe so aus:

PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND
11 root 155 ki31 0K 64K CPU1 1 617.0H 90.21% [idle{idle: cpu1}]
11 root 155 ki31 0K 64K RUN 0 608.1H 87.85% [idle{idle: cpu0}]
11 root 155 ki31 0K 64K RUN 3 616.6H 69.60% [idle{idle: cpu3}]
12 root -92 - 0K 752K CPU3 3 8:24 28.46% [intr{irq277: igb2:que 3}]
12 root -92 - 0K 752K WAIT 0 21:49 6.92% [intr{irq274: igb2:que 0}]
...

Wie man sieht, zeigt sich hier ein anderes Bild zur Auslastung. Entscheidend ist diese Zeile:

12 root -92 - 0K 752K CPU3 3 8:24 28.46% [intr{irq277: igb2:que 3}]

Dazu muss man Wissen, das pfSense pro Verbindung nur einen Kern nutzt. Auch wenn hier die Auslastung nur 28.x% beträgt kommt als weiteres der nachfolgende Absatz hinzu:

Ein Blick auf die verbaute Hardware sowie deren Konfiguration + ein wenig Recherche zeigte, das die verwendete Intel Atom 330-CPU wohl nicht mehr Durchsatz leisten kann. Kurzum: Es muss etwas kräftigeres her. Bei 10 Jahre alter Hardware sicherlich nicht die schlechteste Idee.

Hilfreich können die allgemeinen Empfehlungen zum Sizing sein:

Netgate – Docs – Hardware Sizing Guidance

sowie, wenn man eine bestimmte Hardware im Sinn hat, ein wenig Recherche zu Erfahrungswerten und Testberichten.

Update 29.03.2021

Nachdem wie zuvor festgestellt klar ist, das die Hardware der limitierender Faktor ist, folgte nun ein Upgrade. Die Wahl fiel auf ein Gigabyte J4005N D2P Mini-ITX-Mainboard. Die Intel Celeron J4005-Plattform ist zwar nicht mehr ganz taufrisch (Q4-2017), reicht allerdings für Fälle wie diesen völlig aus und entsprechende Mainboard wie das genannte von Gigabyte sind günstig zu haben und zumeist lüfterlos.

Nach Umbau, Neuinstallation vom aktuellen pfSense CE 2.50 und der Wiederherstellung der Konfiguration konnte direkt getestet werden. Und siehe dazu, es rennt deutlich schneller. War zuvor ein Tuning nötig um auf ca. 640 MB/s zu kommen, ist ab der genannten pfSense CE-Version kein manueller Eingriff mehr nötig.

Den Tests nach kommt man jetzt auf ca. 950 MB/s beim Kopieren einer 10 GB Testdatei von Windows 10 Pro auf Windows Server 2019 Standard in einem anderem Subnetz.