You look at the dashboard graphs, and your stomach drops. Packet loss is creeping past six percent during peak evening utilization, and the CPU graph looks like a hyperactive cardiogram pinned at 98 percent utilization. You rolled out OPNsense with Suricata 7 to protect your network perimeter, but instead of gaining visibility, you built a bottleneck. Every time a bulk download or a multi-stream backup kicks off, your latency spikes, and users start complaining about jitter on VoIP calls. You are trying to inspect multi-gigabit traffic with single-threaded habits, and the hardware is screaming for mercy.
## How Do You Configure OPNsense Suricata 7 for Maximum Hyperscan Efficiency?
Stop relying on the default installation settings. To make Suricata 7 fly on OPNsense, you need to execute a deliberate configuration sequence that forces the engine to leverage hardware vector instructions and multi-threaded processing.
### Step 1: Enable Intel Hyperscan and Advanced Detection Settings
Navigate to `Services: Suricata: Administration` in your OPNsense web GUI. Ensure that you have selected your primary WAN or internal VLAN interfaces. Scroll down to the pattern matcher settings and explicitly choose **Hyperscan** instead of AC (Aho-Corasick) or Hyperscan-preferred. If your CPU lacks AVX2 instruction sets—such as older Intel Atom or legacy Xeon chips—Hyperscan will fail to compile rules, dropping Suricata back into software fallback mode. Verify your CPU capabilities via shell using `grep pse /var/run/dmesg.boot` or checking `sysctl hw.instruction_sse`.
### Step 2: Tune Runmodes and Thread Allocation
Under the advanced settings of your Suricata instance, locate the runmode configuration. Switch from `autofp` (auto flow pinned) to **workers**. The workers runmode ensures that every packet ring on your network interface card is assigned dedicated processing threads. If you have an 8-core CPU, set your processing threads explicitly to match your physical core count (leaving hyperthreaded virtual cores alone if you experience scheduling jitter). Set the app-layer memory limits higher; default stream memcap values will cause premature session pruning on busy multi-gigabit links.
### Step 3: Configure Netmap Inline Mode and Buffer Rings
To achieve active dropping without kernel panics, go to `Services: Suricata: Settings` and ensure **IPS Mode** is checked. Verify that your interface driver supports Netmap (native Intel `em`, `ixgbe`, or `igc` drivers work exceptionally well; Realtek chips will cause packet corruption and kernel lockups under Netmap load). Increase the Netmap ring slot allocation in your system tunable settings (`sysctl dev.netmap.ring_size`) to at least `32768` to absorb micro-bursts of incoming traffic without dropping frames at the driver layer.
### Step 4: Streamline Rule Categories and Eliminate False Positives
Do not enable every rule category available. Activating all Emerging Threats Open rules will bloat your memory footprint and slow down rule evaluation loops with redundant checks. Disable exploit rules for software stacks you do not run (e.g., disable IIS exploit signatures if you run pure Linux/BSD shops). Specifically tune or disable strict policy rules targeting streaming media and VoIP protocols like SIP and RTP, as deep packet inspection on high-throughput media streams introduces unnecessary CPU overhead and causes audio clipping.
### Step 5: Export Clean EVE JSON Logs to SIEM Platforms
Suricata 7 generates massive volumes of telemetry. Do not write verbose packet captures to disk; flash storage will wear out rapidly, and log rotation will choke your system I/O. Enable EVE JSON logging (`Services: Suricata: General`) and output exclusively to a remote collector or SIEM like Wazuh, Security Onion, or an ELK stack via syslog or filebeat. Filter your EVE output to drop `info` and `debug` alerts, capturing only `alert`, `http`, `tls`, and `dns` event types to keep storage footprints manageable.
### Checking Your Work via CLI
Once applied, log into your OPNsense firewall via SSH and run top or htop to verify thread distribution. You should see multiple `Suricata-Main` or worker threads evenly distributing CPU cycles across cores. Check your runtime health by running:
Direct Practical Verdict:
## Why Does Suricata 7 Choke on Multi-Gigabit Networks Out of the Box?
When you install Suricata 7 on a fresh OPNsense instance, the default configuration is conservative by design. It relies on safe, legacy defaults that assume your firewall is managing a modest 100Mbps office connection, not a saturated 1Gbps or 10Gbps pipe chewing through thousands of complex Emerging Threats rules.
The core issue is pattern matching overhead. Suricata evaluates every single packet against tens of thousands of signatures. Without hardware-accelerated regular expression engines, the CPU must inspect strings sequentially in user space. This creates an immediate queue backlog. Packets stack up in the interface ring buffers faster than the detection engine can flush them, resulting in silent drops or severe latency spikes.
Furthermore, many administrators deploy Suricata in legacy IDS (Intrusion Detection System) mode using pcap. This setup only observes copies of packets while the actual traffic streams unhindered through the kernel. While this prevents blocking, it gives you zero inline mitigation capability. When you switch to IPS (Intrusion Prevention System) mode without understanding Netmap interaction or memory allocation, you risk tearing down active TCP states or locking up your entire firewall engine during a distributed denial-of-service event.
## How Do Suricata Runmodes and Hyperscan Actually Impact CPU and Memory?
Understanding how Suricata distributes work across your hardware dictates whether your security stack scales cleanly or collapses under load. The engine supports multiple runmodes, but only the multi-threaded *workers* runmode effectively parallelizes packet acquisition and inspection across all available CPU cores.
When you enable Intel Hyperscan, you shift regex matching from software-based Aho-Corasick algorithms to vectorized instructions executed directly on the CPU vector registers (AVX2 or AVX-512). This transforms the pattern-matching phase from a CPU bottleneck into a high-speed vector stream. However, Hyperscan requires significant RAM because it compiles signatures into large, optimized finite automata databases loaded directly into memory.
To run Suricata 7 on OPNsense at multi-gigabit speeds without packet loss, you must pair the multi-threaded workers runmode with Intel Hyperscan pattern matching, configure Netmap inline blocking, and strictly tune stream reassembly memory buffers to match your specific hardware core count and throughput demands.
| Runmode & Engine | Base RAM Required | Avg. Packet Loss (1Gbps) | Recommended Hardware Sizing |
|---|---|---|---|
| Single-Threaded / Auto (Default) | 2 GB – 4 GB | 12% – 25% | 2 Cores, 2.5 GHz (Homelab only) |
| Workers Runmode + PCAP | 4 GB – 8 GB | 2% – 5% | 4 Cores, AES-NI / AVX2 |
| Workers Runmode + Netmap IPS | 8 GB – 16 GB | < 0.5% | 6–8 Cores, Enterprise NICs (Intel/Chelsio) |
| Hyperscan + Workers + Netmap | 16 GB+ | Zero (Line Rate) | 8+ Cores with AVX2/AVX-512 Support |
suricatasc -c "uptime"
And verify packet capture drop rates using:
suricatasc -c "pocket-stats"
If your dropped packet percentage remains below 0.1 percent under peak load, your Hyperscan multi-tenancy tuning is complete and operating at gold-standard efficiency.
### Frequently Asked Questions
### Can I run Suricata 7 Hyperscan on virtualized OPNsense instances (Proxmox/ESXi)?
Yes, but you must pass CPU flags through to the guest operating system. In Proxmox, configure your VM CPU type to `host` rather than the default `qemu64` to ensure AVX2 instructions are fully exposed to OPNsense, allowing Hyperscan compilation to succeed.
### What happens if my NIC does not support Netmap?
If your network interface card driver lacks native Netmap support, OPNsense will fall back to emulated Netmap mode. This introduces significant CPU overhead and negates the performance gains of inline blocking, forcing you back to passive IDS monitoring using PCAP mode.
### How much RAM should I allocate for Emerging Threats Pro rulesets with Hyperscan?
Hyperscan databases require substantially more memory than standard Aho-Corasick engines because compiled pattern automata are larger. For a full commercial Emerging Threats Pro rule set combined with local custom signatures, allocate a minimum of 8GB to 12GB of dedicated RAM strictly to the Suricata service.
High-Throughput Deep Packet Inspection & Hardware Firewalls
Eliminating static SSH credentials removes the primary vector for perimeter intrusion. For hardware-accelerated IDS/IPS packet filtering, explore our study on Teleport vs Cloudflare Access: SSH Zero-Trust Sizing.

