# OPNsense Performance Tuning: Das Gateway auf Höchstgeschwindigkeit trimmen

TL;DR / Management Summary Standard-Installationen von OPNsense sind auf maximale Kompatibilität ausgelegt, nicht auf maximale Geschwindigkeit. In Umgebungen mit 10 GbE oder schnellen Proxmox-Bridges (Artikel 547) müssen wir den FreeBSD-Kernel und den Netzwerkstack manuell anpassen. Ein Senior Admin optimiert das Interrupt-Handling, konfiguriert Tunables für den Speicher-Stack und stellt sicher, dass Hardware-Features wie AES-NI und RSS optimal genutzt werden.


# 1. Hardware-Voraussetzungen

Das Fundament.

Bevor wir softwareseitig tunen, muss die Hardware passen:


# 2. Kernel Tunables (Der BSD-Hebel)

Feingefühl in der Registry von BSD.

Unter System -> Settings -> Tunables können Sie Parameter direkt an den Kernel übergeben.

# Die wichtigsten Performance-Tunables

  1. net.inet.tcp.recvbuf_max: Auf 16777216 erhöhen für schnelle WAN-Links.
  2. net.inet.tcp.sendbuf_max: Auf 16777216 erhöhen.
  3. kern.ipc.maxsockbuf: Auf 16777216 setzen (ermöglicht größere TCP Windows).
  4. net.isr.dispatch: Auf deferred stellen, um die Last auf mehrere CPU-Kerne zu verteilen (RSS).

# 3. Deep Dive: Netzwerk-Karten Tuning

Vom Treiber zum Draht.

# 1. Hardware Offloading

Wie in Artikel 547 erwähnt: In virtuellen Umgebungen (Proxmox) aus, auf Bare-Metal (mit Intel Karten) an.

# 2. RSS (Receive Side Scaling)

Ermöglicht es der NIC, eingehende Pakete auf verschiedene CPU-Queues zu verteilen.


# 4. Day-2 Operations: ZFS Performance

Dateisystem-Tuning.

Wenn Sie OPNsense auf ZFS installiert haben (Empfehlung!):

# In /boot/loader.conf.local
vfs.zfs.arc_max="512M"

# 5. Troubleshooting & “War Stories”

Wenn das Tuning nach hinten losgeht.

# Top 3 Fehlerbilder

  1. Symptom: System bootet nicht mehr nach Tunable-Änderung.

    • Lösung: Booten in den “Single User Mode” (Option 2 im Bootloader) und die Änderungen in /boot/loader.conf rückgängig machen.
  2. Symptom: Paketverluste bei hohem PPS (Packets Per Second).

    • Ursache: Zu kleine Mbuf-Cluster.
    • Fix: kern.ipc.nmbclusters auf 1000000 erhöhen.
  3. Symptom: VPN-Performance (OpenVPN) ist trotz starker CPU schlecht.

    • Ursache: OpenVPN ist Single-Threaded.
    • Lösung: Wechsel auf WireGuard (Artikel 566) oder Betrieb mehrerer OpenVPN-Instanzen auf verschiedenen Ports.

# “War Story”: Der 10G-Flaschenhals

Ein Kunde wunderte sich, warum sein neuer 10G-Cluster zwischen zwei VLANs nur 3 Gbit/s schaffte. Die CPU der OPNsense war bei 100% auf einem Kern. Die Entdeckung: Das Interface nutzte nur eine einzige Interrupt-Queue. Ein einziger CPU-Kern musste den gesamten 10G Traffic verarbeiten. Lösung: Aktivierung von MSI-X und RSS in den Tunables. Danach verteilte sich die Last auf 4 Kerne, und der Durchsatz stieg auf 9.4 Gbit/s. Lehre: Ohne Multi-Queue Support ist 10G-Routing auf Software-Appliances nicht möglich.


# 6. Monitoring & Reporting

Flaschenhälse finden.

# Dashboard Analyse


# 7. Fazit & Empfehlung

Performance-Tuning ist ein iterativer Prozess.


# Anhang: Die wichtigsten Performance-Befehle (Shell)

Aufgabe Befehl
CPU Last pro Kern top -P
Interrupts sehen vmstat -i
Tunables prüfen `sysctl -a
NIC Statistik netstat -ihw 1

# Referenzen